【问题标题】:How to read ".gz" compressed file using spark DF or DS?如何使用 spark DF 或 DS 读取“.gz”压缩文件?
【发布时间】:2018-09-04 13:11:12
【问题描述】:

我有一个 .gz 格式的压缩文件,是否可以直接使用 spark DF/DS 读取文件?

详细信息:文件是带有制表符分隔的 csv。

【问题讨论】:

  • SO 中的许多人可能受到欺骗。有些是:thisthis
  • spark.read.csv 适用于 gzip 文件

标签: apache-spark apache-spark-sql gzip apache-spark-dataset


【解决方案1】:

读取压缩的 csv 与读取未压缩的 csv 文件的方式相同。对于 Spark 2.0+ 版本,可以使用 Scala 进行如下操作(注意制表符分隔符的额外选项):

val df = spark.read.option("sep", "\t").csv("file.csv.gz")

PySpark:

df = spark.read.csv("file.csv.gz", sep='\t')

唯一需要考虑的额外考虑因素是 gz 文件不可拆分,因此 Spark 需要使用单个内核读取整个文件,这会减慢速度。读取完成后,可以对数据进行混洗以增加并行度。

【讨论】:

  • 谢谢,我确实使用读取 csv 选项直接读取了文件。我可以观察到缓慢。使用单核读取整个文件是最佳做法吗?
  • @prady 由于文件为gzip,因此必须使用单核读取。一种解决方法是首先解压缩文件并使用 Spark 读取数据。或者你可以改变压缩类型,参考这个问题:stackoverflow.com/questions/14820450/…
  • 感谢参考
  • 有人能告诉我如何将 csv.bz2 读入数据帧吗?
  • @SithijaPiyumanThewaHettige:应该应用与此答案相同的方法,即:spark.read.textFile("file.csv.bz2")(您也可以尝试spark.read.textFile)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 2011-03-18
  • 2015-09-10
  • 2020-02-12
相关资源
最近更新 更多