2017-07-20 7 views
0

MongoSparkを使用して、MongoDBデータベースからJSONデータをSpark DataFrameとして読み込みます。今私は、DataFrameにあるJSONデータを寄木張りのファイルとして書きたいと思います。それは魅力的です。しかし、私は、生成された寄木張りファイルの圧縮に関連するオプションを設定するのに苦労しています。私はコーデックとしてSnappyを使いたいのですが、生成されたParquetファイルのブロックサイズを指定して "より大きな"ファイルを生成したいと思います。私は今までにどのように多くの異なるアプローチを試したのか分かりませんが、数多くあります。 .option(...)ステートメントをDataFrame.write()メソッドに「連鎖」するだけでこれが簡単にできると思っていましたが、今まで私は努力していませんでした。Spark DataFramを寄木張りとして保存する際のオプションを指定します。

私はここで間違っていますか?

+0

sqlContext.setConf( "spark.sql.parquet.compression.codec" "きびきび") –

答えて

0

あなたは2つのオプションがあります。

  1. は「きびきび」にスパークでspark.sql.parquet.compression.codec構成を設定します。これは、sparkセッションを作成する前に行います(configを作成するとき、またはデフォルトの設定ファイルを変更するとき)。
  2. df.write.option( "圧縮"、 "きびきび")。寄木細工(ファイル名)
+0

こんにちはアサフ!私は次のようにしました:df.sqlContext().setConf( "spark.sql.parquet.compression.codec"、 "snappy")とそれは圧縮コーデックの問題を解決しました。うーん、今私は、生成されたParquet.filesのブロックサイズを指定するための救済策を見つける必要があります。 – user1297653

+0

sqlContextを使用しているので、古いバージョンのsparkを使用していると思います。ブロックサイズに対してこれを試すことができます:val blockSize = 1024 * 1024 * 16 // 16MB sc.hadoopConfiguration.setInt( "dfs.blocksize"、blockSize) sc.hadoopConfiguration.setInt( "parquet.block.size"、 –

+0

私はsqlContextを使用せずにdf.sqlContext.setConf(...)を使用しました。私はDataFrameを書き出すときに代替圧縮コーデック(スナッピー)を指定することができました。私はdf.write()。オプション(...)を指定するだけで同じことをすることができると思っていましたが、今まで私はこのようにしていませんでした。 df.sqlContext()。。setConf(...)はその部分を解決しました... – user1297653

関連する問題