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



我有一千个压缩格式的二进制文件,每个文件都需要在一次中单独解码。文件的最大大小为500 MB。目前,我可以使用python(带struct包)逐个解码文件。但由于文件的数量和大小都很大,因此不可能按顺序解码文件。

我正在考虑在spark中处理这些数据,但我在spark方面没有太多经验。你能不能建议一下这项任务能否迅速完成。非常感谢。

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)

您可以使用zlib解压缩

最新更新