我正在尝试从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库的步骤吗?