2016-07-04 7 views
1

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分まで、パフォーマンスに大きな違いがありました。

答えて

0

複数のドリルビットを1台のサーバーで実行することはできません。

はい、ドリルは多くのプロセスパワーを何度も使用しています。大きなデータセットで計算するとCPU使用率は300〜400%になります。&私は、それが寄木細工ファイルにシングルスレッドを使用していると思います。

+0

ドリルは確実に複数のコアを使用しますが、書き込み時にはCTASステートメントでは特に大量のデータが1つのスレッド/コアに限定されているようです。 – zarniwoop

+0

実際には、ドリルはデータをディスクに書き込むときに複数のスレッドを使用できますが、データのサイズとクエリによって異なります – adeneche

+0

これを達成するために必要なことを詳しく説明できますか?私が書いているファイルは約500MBです。プロセスが間違いなくCPUに束縛されているという証拠に基づいて、私はparquetとcsvの両方を試しました。ドリル1.6。 – zarniwoop

関連する問題