0

我有一个 HDFS zip 文件 URL 列表,我想在 RDD map 函数中打开每个文件,而不是使用 binaryFiles 函数。

最初,我尝试如下:

def unzip(hdfs_url):
  # read the hdfs file using hdfs python client

rdd = spark.sparkContext.parallelize(list_of_hdfs_urls, 16) # make 16 partitions
rdd.map(lambda a: unzip(a)) 

但后来我意识到这不会提供数据局部性,即使它在集群中并行运行。

有什么方法可以x在 hdfs 文件所在的节点上为文件 url 运行 map 函数x,如何让 spark 知道这个位置。

我想以这种方式读取 zip 文件以在 pyspark 中获得更好的性能,因此我可以避免每个执行程序上的 python 和 java 进程之间的文件序列化和反序列化。

4

0 回答 0