将二进制文件读入Spark

时间:2017-08-04 06:42:11

标签: scala apache-spark spark-streaming binaryfiles binary-data

我有一组文件,每个文件都包含Marc21二进制格式的特定记录。我想将这组文件作为RDD摄取,其中每个元素都是一个记录对象作为二进制数据。稍后,我将使用Marc库将对象转换为Java Object以进行进一步处理。

截至目前,我对如何阅读二进制文件感到困惑。

我见过以下功能:

binaryRecord(path: string, recordLength: int, conf)

但是,它假设它是一个具有相同长度的多个记录的文件。我的记录肯定会有不同的大小。旁边的每个都在一个单独的文件上。

有没有办法解决这个问题?我怎样才能为每个文件提供长度?唯一的方法只是计算我的文件的长度然后读取记录吗?

我看到的另一个解决方案显然是以Java格式读取记录并将其序列化为任何适合摄取的格式。

请告知。

1 个答案:

答案 0 :(得分:0)

您是否尝试过spark中的sc.binaryFiles()?

以下是文档的链接 https://spark.apache.org/docs/2.1.1/api/java/org/apache/spark/SparkContext.html#binaryFiles(java.lang.String,%20int)