動機: データを Apache Drill にロードしたい。Drill が JSON 入力を処理できることは理解していますが、それが Parquet データでどのように機能するかを確認したいと考えています。
最初にデータを Hive などにロードしてから、Parquet コネクタの 1 つを使用して出力ファイルを生成することなく、これを行う方法はありますか?
動機: データを Apache Drill にロードしたい。Drill が JSON 入力を処理できることは理解していますが、それが Parquet データでどのように機能するかを確認したいと考えています。
最初にデータを Hive などにロードしてから、Parquet コネクタの 1 つを使用して出力ファイルを生成することなく、これを行う方法はありますか?
@rahulの回答を完成させるには、ドリルを使用してこれを行うことができますが、ドリルですぐに使えるようにするには、クエリにさらに追加する必要がありました。
create table dfs.tmp.`filename.parquet` as select * from dfs.`/tmp/filename.json` t
ストレージプラグイン(dfs)を提供する必要があり、「ルート」構成はディスク全体から読み取ることができ、書き込み可能ではありません。ただし、tmp 構成 (dfs.tmp) は書き込み可能で、/tmp に書き込みます。そこで私はそこに書きました。
しかし、問題は、json がネストされているか、おそらく異常な文字が含まれている場合、不可解なエラーが発生することです。
org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: java.lang.IndexOutOfBoundsException:
members: {id:123, name:"joe"}
選択を次のように変更する必要があるような構造がある場合
select members.id as members_id, members.name as members_name
また
select members.id as `members.id`, members.name as `members.name`
それを機能させるために。
その理由は、寄木細工が「列」ストアであるため、列が必要だからだと思います。JSON はデフォルトではないため、変換する必要があります。
問題は、json スキーマを知る必要があり、すべての可能性を含めるために選択を作成する必要があることです。これを行うより良い方法を知っている人がいれば幸いです。