如何在PySpark中解压缩大文件?

时间:2017-02-16 23:32:45

标签: python apache-spark zip pyspark unzip

我需要在PySpark中解压缩1.6G文件。

我尝试过按照以下方式做事:

unzipped_files = sc.union( \
                        [sc.binaryFiles(path) for path in paths]) \
                           .flatMap(lambda kv: unzip_file(kv) \
                         )

其中paths是文件路径列表(目前只有一个元素),而unzip_file看起来像是这样的:

zipped_file_obj = zipfile.ZipFile(io.BytesIO(zipped_file[1]), "r")

return [
        zipped_file_obj.open(filename).read() 
        for filename in zipped_file_obj.namelist()
       ]

但是我得到的unzipped_files RDD完全无法使用。像.isEmpty()这样简单的事情会导致作业被关闭,而py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.这样的消息对我来说并没有帮助。

即使我尝试执行以下操作:

file = sc.binaryFiles(paths[0])

也是一个完全无法使用的RDD。我要把头发拉出来。文件太大了吗?

0 个答案:

没有答案