将Spark DataFram保存为Parquet

时间:2017-07-20 12:57:19

标签: apache-spark dataframe compression

我使用MongoSpark从MongoDB数据库中读取JSON数据作为Spark DataFrame。现在我想把驻留在DataFrame中的JSON数据写成Parquet文件,它就像一个魅力。但是,我正在努力为生成的Parquet文件设置压缩相关选项。我想使用Snappy作为编解码器,并且还希望通过为生成的Parquet文件指定块大小来生成“更大”的文件。我不知道到目前为止我测试了多少种不同的方法,但它们很多。我认为只需将.option(...)DataFrame.write()语句“链接”到TimeGrouper方法即可,这是一件很简单的事情,但到目前为止,我的努力都没有成功。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 将spark中的spark.sql.parquet.compression.codec配置设置为snappy。这将在创建spark会话之前完成(无论是创建配置还是更改默认配置文件)。
  2. df.write.option("compression","snappy").parquet(filename)