从PySpark的worker节点访问ADLS上的二进制文件的最有效方法是什么?

2024-06-28 19:50:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经部署了一个azurehdinsight群集,它对azuredatalake存储上的所有目录都具有rwx权限,该存储帐户也是其存储帐户。在head节点上,我可以使用如下命令从ADLS加载图像数据:

my_rdd = sc.binaryFiles('adl://{}.azuredatalakestore.net/my_file.png')

工作线程无法访问SparkContext的binaryFiles()函数。我可以使用azure-datalake-storepythonSDK来加载该文件,但这似乎要慢得多。我假设是因为它没有意识到集群和ADLS之间的关联带来的好处。在

有没有一种更快的方法从相关的adl加载文件到工人身上?在

如有需要,可提供进一步的背景:

我正在使用PySpark将一个经过训练的深度学习模型应用到大量图像集合中。由于加载模型需要很长时间,我的理想是:

  • 向每个工作进程发送要处理的映像uri的部分列表(通过将mapPartition()应用于包含完整列表的RDD)
  • 让工作人员一次加载一个图像的数据,以便对模型进行评分
  • 返回图像集的模型结果

由于我不知道如何在worker上高效地加载映像,目前我的最佳选择是对包含映像字节数据的RDD进行分区,这(我假设)内存效率低下,并通过让head节点执行所有数据加载而造成瓶颈。在


Tags: 文件数据模型图像列表节点my部署
1条回答
网友
1楼 · 发布于 2024-06-28 19:50:35

HDInsight集群的主存储仅作为HDFS根目录提供。在

hdfs dfs -ls /user/digdug/images/
Found 3 items
-rw-r r    1    digdug supergroup       4957 2017-01-24 07:59 /user/digdug/images/a.png
-rw-r r    1    digdug supergroup       4957 2017-01-24 07:59 /user/digdug/images/b.png
-rw-r r    1    digdug supergroup       1945 2017-01-24 08:01 /user/digdug/images/c.png

在pyspark中:

^{pr2}$

输出:

^{3}$

相关问题 更多 >