使用Spark解码一组二进制文件

rks*_*rks 3 apache-spark

我有一千个压缩格式的二进制文件,每个文件都需要通过一次解码分别解码。文件的最大大小为500 MB。目前,我能够使用python(带有struct包)来一对一地解码文件。但是,由于文件的数量和大小很大,因此无法顺序解码文件。

我正在考虑在Spark中处理这些数据,但是我在Spark中没有很多经验。您能建议一下是否可以立即完成此任务。提前谢谢了。

ven*_*tan 5

sc.textFiles由于您具有二进制文件,因此无法在此处使用。您应该使用sc.binaryFiles

这是python中的示例,我敢肯定scala和java具有相同的binaryFiles API。

from pyspark import SparkContext
sc= SparkContext()

raw_binary = sc.binaryFiles("/path/to/my/files/directory")

import zlib
def decompress(val):
    try:
        s = zlib.decompress(val, 16 + zlib.MAX_WBITS)
    except:
        return val
    return s
raw_binary.mapValues(decompress).take(1)
Run Code Online (Sandbox Code Playgroud)

您可以使用zlib解压缩