Spark - 如何将 Bz2 文件解压缩为 parquet 文件
Posted
技术标签:
【中文标题】Spark - 如何将 Bz2 文件解压缩为 parquet 文件【英文标题】:Spark - How to decompress Bz2 file to parquet file 【发布时间】:2021-08-19 19:11:20 【问题描述】:我有一个被压缩成 bzip2 的 parquet 文件,这与使用 bzip2 或 snappy 压缩的 parquet 文件不同。
有人可以告诉我如何将此文件解压缩回 parquet 文件吗?
我试过了
spark.sparkContext.textFile("/mnt/shahgau/test/000000_0.bz2").saveAsHadoopFile("/mnt/shahgau/test/00000_0.parquet", "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat")
错误:
org.apache.spark.SparkException: RDD element of type java.lang.String cannot be used
我尝试将其作为 parquet 文件读取,但随后出现错误
spark.read.parquet("/mnt/shahgau/test/000000_0.bz2").show()
错误:
Caused by: java.io.IOException: Could not read footer for file:
【问题讨论】:
您能分享一下您是如何将 parquet 文件压缩成 bzip2 的吗?对我来说似乎工作正常 【参考方案1】:如果你自己使用过 bzip2,我可以使用如下:
%sh 允许您在笔记本中运行 shell 代码。
压缩.parquet
%sh
bzip2 /dbfs/FileStore/user/adf/userdataOriginal.parquet
解压回parquet:
%sh
bzip2 -d /dbfs/FileStore/user/adf/userdataOriginal.parquet.bz2
读取拼花文件:
spark.read.parquet("dbfs:/FileStore/user/adf/userdataOriginal.parquet").show()
【讨论】:
这仅在文件存储在 databricks 本地存储中时才有效,如果存储在 ADLS 中则无效。我说的是超过 PB 的数据,因此来回移动是行不通的。以上是关于Spark - 如何将 Bz2 文件解压缩为 parquet 文件的主要内容,如果未能解决你的问题,请参考以下文章