CTAS
ステートメントを使用して、Apache Drillのcsvから寄木張りファイルを作成しています。 私はtmpfsに書き込もうとしても、さまざまな設定パラメータを変更して複数の実験を試みました。Apacheドリルの書き込みパフォーマンスを向上させるには
私のテストには常に同じ時間がかかります。私はIOバインディングではありません。私はCPUに束縛されている可能性があります。一貫して、1つのJavaスレッドはほとんどの場合100%です。試してみました
実験:
store.parquet.compression=none
store.parquet.page-size=8192
planner.slice_target=10000
store.parquet.block-size=104857600
store.text.estimated_row_size_bytes=4k
私は誰もがこれを確認することができ、おそらくドリルは、書き込み用シングルスレッドであるという結論に達しましたか?
12コアサーバーでは、利用可能なヘッドルームが十分に用意されています。
複数のドリルビットを1台のサーバーで実行できますか?
更新: CTASの出力形式がcsvであっても寄木張りであっても性能は同じであるため、一般的にデータを書き込む能力に限界があります。
表を作成する(COL1、COL2、COL3、...)AS SELECT:フォームのステートメントを使用して、ヘッダなしCTAS文への入力としてCSVファイルを使用してから切り替え :
アップデート2列[0]、列[1]、列[2] filename
から; CSVは、ヘッダーでファイルを使用する
、すなわちのようなものにステートメントを変更:
TABLE(NAME1、NAME2、NAME3、...)AS SELECT NAME1、NAME2、filename
からNAME3を作成します。
ヘッダー行にname1、name2などが定義されている場合、全体的なプロセスを実行するための一貫した13分から9分まで、パフォーマンスに大きな違いがありました。
ドリルは確実に複数のコアを使用しますが、書き込み時にはCTASステートメントでは特に大量のデータが1つのスレッド/コアに限定されているようです。 – zarniwoop
実際には、ドリルはデータをディスクに書き込むときに複数のスレッドを使用できますが、データのサイズとクエリによって異なります – adeneche
これを達成するために必要なことを詳しく説明できますか?私が書いているファイルは約500MBです。プロセスが間違いなくCPUに束縛されているという証拠に基づいて、私はparquetとcsvの両方を試しました。ドリル1.6。 – zarniwoop