0

単一ノードのセットアップで Apache ドリルを使用して、600 GB を超える csv ファイルを寄木細工に再フォーマットしようとしています。

SQL ステートメントを実行します。

CREATE TABLE AS Data_Transform.'/' AS
....
FROM Data_source.'/data_dump/*'

寄木細工のファイルを作成していますが、エラーが発生します:

Query Failed: An Error Occurred
org.apache.drill.common.exceptions.UserRemoteException: RESOURCE ERROR:     
One or more nodes ran out of memory while executing the query.

これを回避する方法はありますか?または、変換を行う別の方法はありますか?

4

1 に答える 1

0

ローカル ノードでこれらすべての GB をクエリすることが可能かどうかはわかりません。docs に従ってメモリを構成した場合、Drillbits のクラスターを使用して負荷を共有することは明らかな解決策ですが、すでにそれを知っていると思います。

実験する意思があり、個々の列を選択するのではなく、select * を使用して csv ファイルを変換している場合は、クエリを select columns[0] as user_id, columns 1 as user_name のように変更します。可能であれば、列を int、float、datetime などの型にキャストします。これにより、データを varchar に格納する際の読み取りオーバーヘッドが回避され、分析のためにキャストする必要がある将来のクエリのためにデータが準備されます。

また、Drill 開発者からの次の推奨事項も見ました。ファイルを手動で小さなファイルに分割して、ローカル ファイル システムの機能制限を克服します。Drill はブロック分割でファイルを分割しません。

于 2015-09-16T17:39:16.923 に答える