如何使用EMR Notebook上的pyspark从tar.bz2中读取实木复合地板文件?

时间:2020-09-03 01:11:52

标签: amazon-s3 pyspark amazon-emr

我正在尝试从S3存储桶中以tar.bz2格式读取实木复合地板(条形)文件,但收到此错误: “ java.io.IOException:无法读取文件的页脚”

使用时:

df = spark.read.parquet("s3://bucket/folder/filename.tar.bz2")

我已经下载了一个tar.bz2文件,并确认它在基础tar目录中是有效的实木复合地板。

我还研究了在boto3软件包中使用S3 Select的方法,但是看起来BZIP目前仅支持CSV和JSON文件,而不支持镶木地板。我还尝试过将文件解压缩到S3中,如下所示:

sc.install_pypi_package("boto3")
import boto3
from io import BytesIO
import tarfile

s3 = boto3.client('s3')
obj = s3.get_object(Bucket=bucket,Key='folder/filename.tar.bz2')
wholefile = obj['Body'].read()
fileobj = BytesIO(wholefile)
tar = tarfile.open(fileobj=fileobj)
s3.upload_fileobj(Fileobj=tar, Bucket=bucket, Key='folder/filename.parquet')

但是,这只会产生一条“解释器死亡:”错误消息,而没有任何其他信息(可能是由于群集中的内存不足?)。我缺少解压缩tar库的步骤吗?

0 个答案:

没有答案