scala - 如何将 DataFrame 保存为压缩(gzipped)CSV?

标签 scala csv apache-spark apache-spark-sql

我使用 Spark 1.6.0 和 Scala。

我想将 DataFrame 保存为压缩的 CSV 格式。

这是我到目前为止所拥有的(假设我已经将 dfsc 作为 SparkContext):

//set the conf to the codec I want
sc.getConf.set("spark.hadoop.mapred.output.compress", "true")
sc.getConf.set("spark.hadoop.mapred.output.compression.codec", "true")
sc.getConf.set("spark.hadoop.mapred.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec")
sc.getConf.set("spark.hadoop.mapred.output.compression.type", "BLOCK")

df.write
  .format("com.databricks.spark.csv")
  .save(my_directory)

输出不是 gz 格式。

最佳答案

此代码适用于 Spark 2.1,其中 .codec 不可用。

df.write
  .format("com.databricks.spark.csv")
  .option("codec", "org.apache.hadoop.io.compress.GzipCodec")
  .save(my_directory)

对于 Spark 2.2,您可以使用此处描述的 df.write.csv(...,codec="gzip") 选项:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=codec

关于scala - 如何将 DataFrame 保存为压缩(gzipped)CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40163996/

相关文章:

scala - 如何在 Scala 中为类实例生成唯一 ID?

sql - 如何更改spark sql中的列值

scala - 使用 Spark Scala 将 HDFS 文件内容存储在 ArrayBuffer 中

python - Pyspark RDD 收集前 163 行

scala - 使用 Shapeless 对 arity 进行抽象

scala - 使用sbt shell进行构建和导入

scala - 方法参数是否触发 Spark 中的序列化?

linux - 使用 wget 自动打开 URL 并保存它们

python - Scrapy:如何检查以前抓取的页面是否已被删除?

javascript - HTML - 从远程在线 CSV 文件访问数据