3

mysql テーブルを寄木細工のファイル (avro ベース) にエクスポートしました。今、そのファイルから特定の列を読みたいと思っています。特定の列を完全に読み取るにはどうすればよいですか? Java コードの例を探しています。

必要な列を渡してテーブルの 2D 配列を取得できる API はありますか?

4

3 に答える 3

1

ハイブを使用できる場合は、ハイブ テーブルを作成し、単純な選択クエリを発行するのが最も簡単なオプションです。

create external table tbl1(<columns>) location '<file_path>' stored as parquet; select col1,col2 from tbl1; //this works in hive 0.14 JDBC ドライバーを使用して、Java プログラムからもそれを行うことができます。

それ以外の場合、完全に Java のままにしたい場合は、取得するフィールド以外のすべてのフィールドを除外して avro スキーマを変更する必要があります。次に、ファイルを読み取るときに、変更されたスキーマをリーダー スキーマとして指定すると、含まれている列のみが読み取られます。ただし、2D 配列ではなく、除外されたフィールドが無効化された元の avro レコードが返されます。

スキーマを変更するには、org.apache.avro.Schema と org.apache.avro.SchemaBuilder を参照してください。変更されたスキーマが元のスキーマと互換性があることを確認してください。

于 2015-01-15T16:49:07.393 に答える
0

寄木細工のファイルをネイティブに解析する apache drill を使用することもできます。

于 2015-09-21T16:42:48.870 に答える