0

使用: Apache ドリル

次のデータをより構造化された形式で取得しようとしています。

"apple","juice", "box:12,shipment_id:143,pallet:B12" 
"mango", "pulp", "box:7,shipment_id:133,pallet:B19,route:11"
"grape", "jam", "box:10"

望ましい出力:

fruit, product, box_id, shipment_id, pallet_id, route_id
apple,juice, 12, 143, B12, null
mango, pulp, 7, 133, B19, 11
grape, jam, 10, null, null, null

データセットは数 GB に達します。Drill は入力を 3 つの列に読み取り、最後の文字列を 1 つの列に読み込みます。最後の列で文字列操作操作 (REGEXP_REPLACE および CONCAT) を実行し、列を json (CONVERT_FROM) として読み取り、最後に KVGEN および FLATTEN を使用して異なる列に分離することで、目的の出力を正常に達成しました。

正規表現関数のため、実行時間はかなり長くなります。より良いアプローチはありますか?

(PS: 実行時間は、目的の出力を達成するために pyspark ジョブを使用する場合と比較されます)。

4

1 に答える 1

0

中間ストレージなしで、Apache Drill で 100% 実行する方法は他にありません。

書きやすくするために、Java でカスタム関数を試すことができます。

作業が完了したら、データを Parquet ファイルに保存しようとしましたか? CTAS コマンド: http://drill.apache.org/docs/create-table-as-ctas-command/

これにより、後続のクエリが大幅に高速化されます。

于 2015-11-18T08:03:19.207 に答える