从hdfs读取zip文件并创建包含文件名和文件内容的数据框

时间:2017-06-05 22:09:43

标签: zip pyspark spark-dataframe

我正在尝试读取位于wasp位置的zip文件,并使用文件名和文件内容创建df。 Rach zip文件有多个.rcv文件。

我尝试过这样做,但它将所有文件的内容都作为rdd,而不是我想要的。

以下代码将zipfile名称及其文件内容作为键值对。我期望的是将单个文件名及其内容作为键值对

例如: ACARS 20170507 / file1.rcv“文件内容为字符串”

ACARS 20170507 / file2.rcv“文件内容为字符串”

def zip_extract(x):
    in_memory_data = io.BytesIO(x[1])
    file_obj = zipfile.ZipFile(in_memory_data, "r")
    files = [i for i in file_obj.namelist()]
    return dict(zip(files, [file_obj.open(file).read() for file in files]))


zips = sc.binaryFiles("hdfs://ACARS 20170507.zip")
files_data = zips.map(zip_extract).collect()

0 个答案:

没有答案