Spark / pySpark:读取小二进制数据文件的最佳方式

时间:2015-09-03 17:25:20

标签: apache-spark pyspark

我需要从二进制文件中读取数据。这些文件很小,大约为or 1 = 1,因此使用1 MB并逐个文件处理它们(开销太大)可能效率不高。

我可以在一个大文件中加入它们然后使用binaryFiles(),但是记录大小只是binaryRecords(),所以我想将几个记录连接在一起,以便生成大块的大小为几十兆字节。二进制文件格式允许这样做。

我怎样才能做到这一点? 更一般的说法:这是解决问题的正确方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

从Spark 2.1开始,binaryFiles()会将多个小型输入文件合并到一个分区中(默认为每个分区128 MB),因此使用binaryFiles()读取小型文件现在应该效率更高。

有关binaryFiles()以及如何调整默认的128 MB大小(如果需要)的更多详细信息,另请参见https://stackoverflow.com/a/51460293/215945

答案 1 :(得分:-2)

我不确定,但这种方式可能会有所帮助:

N是您的小文件数。

rdd = sc.parallelize(1到N,N)。mapPartitions(binaryFiles())。collect()