Spark/pySpark:读取小型二进制数据文件的最佳方式
Posted
技术标签:
【中文标题】Spark/pySpark:读取小型二进制数据文件的最佳方式【英文标题】:Spark/pySpark: Best way to read small binary data files 【发布时间】:2015-09-03 17:25:19 【问题描述】:我需要从二进制文件中读取数据。这些文件很小,大约为1 MB
,因此使用binaryFiles()
并逐个文件处理它们可能效率不高(开销太大)。
我可以将它们合并到一个大文件中,然后使用binaryRecords()
,但是记录大小只有512 bytes
,所以我想将几条记录连接在一起,以产生几十个大小的块兆字节。二进制文件格式允许这样做。
我怎样才能做到这一点? 更笼统地说:这是解决问题的正确方法吗?
谢谢!
【问题讨论】:
【参考方案1】:从 Spark 2.1 开始,binaryFiles()
会将多个小输入文件合并到一个分区中(默认为每个分区 128 MB),因此现在使用 binaryFiles()
读取小文件应该更加高效。
有关binaryFiles()
以及如何调整默认 128 MB 大小(如果需要)的更多详细信息,另请参阅 https://***.com/a/51460293/215945。
【讨论】:
【参考方案2】:我不确定,但这种方式可能会有所帮助:
N 是您的小文件的数量。
rdd = sc.parallelize(1 to N, N).mapPartitions(binaryFiles()).collect()
【讨论】:
以上是关于Spark/pySpark:读取小型二进制数据文件的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章
Apache Spark (PySpark) 在读取 CSV 时处理空值