【发布时间】:2019-07-31 13:38:57
【问题描述】:
我在 HDFS 中存储了大约 60k 个文件,每个文件大小在千字节 4kb-70kb 的范围内。 我正在尝试通过对我知道的特定文件执行正则表达式搜索来处理它们,处理时间太长,而且似乎不对...
火花作业在纱线上运行
硬件规格:3个节点,每个节点有4核和15G RAM
targeted_files = sc.broadcast(sc.textFile(doc).collect()) # 3 files
#hdfs://hadoop.localdomain/path/to/directory/ contains ~60K files
df = sc.wholeTextFiles(
"hdfs://hadoop.localdomain/path/to/directory/").filter(
lambda pairRDD: ntpath.basename(pairRDD[0]) in targeted_files.value)
print('Result : ', df.collect()) #when I run this step alone, took 15 mins to finish
df = df.map(filterMatchRegex).toDF(['file_name', 'result']) # this takes ~hour and still doesn't finish
将使用 HDFS,此任务的 spark 是否正确? 我还认为在最坏的情况下,处理时间将等于使用 java 的线程方法......我做错了什么?
我遇到了this link,它解决了同样的问题,但不确定如何在 pyspark 中处理它 从 HDFS 读取文件似乎花费了所有/大部分时间,有没有更好的方法来读取/存储小文件并使用 spark 处理它们?
【问题讨论】:
标签: apache-spark pyspark hdfs