2017-07-19 5 views
0

私は約3500のcsvを持っています。これは、私が寄木細工に変換して日付に分割しました(このデータは7日間に渡ります)。私はすべてのファイルが1GBのように寄木細工のファイルサイズを設定したいと思います。現在、私は64から128 MBの間でさまざまなサイズのファイルが多すぎます(1日あたり400-600)。パーティション(1日あたり)のx個のファイルにパーティションを再分割することができますが、1日にどれだけのデータが存在するかによってファイルサイズが変わりますので、1日に20GBがあるので10個のファイルはそれぞれ2GBです2日目は10GBなので、各ファイルは1GBです。私はすべてのパーティションのすべてのファイルが1GBのように/コードを設定する方法を探しています。私はpysparkを使用しています。ここでは、寄せ木張りのファイルを書くために使用するコードです。Azure HDInsightのSparkで寄木ブロックサイズを設定するには?

csv_reader_df.write.partitionBy("DateId").option("compression","snappy").parquet('hdfs://mycluster/home/sshuser/snappy_data.parquet') 

答えて

0

寄木細工ライターは、スパークパーティションごとに1つのファイルを使用します。 ファイルの数を管理するには、パーティションを再分割または結合する必要があります。

val PARQUET_BLOCK_SIZE: Int = 32 * 1024 * 1024 
val targetNbFiles: Int = 20 
csv_reader_df.coalesce(targetNbFiles).write.option("parquet.block.size",PARQUET_BLOCK_SIZE).partitionBy("DateId").option("compression","snappy").parquet('hdfs://mycluster/home/sshuser/snappy_data.parquet') 
関連する問題