mysql テーブルを寄木細工のファイル (avro ベース) にエクスポートしました。今、そのファイルから特定の列を読みたいと思っています。特定の列を完全に読み取るにはどうすればよいですか? Java コードの例を探しています。
必要な列を渡してテーブルの 2D 配列を取得できる API はありますか?
ハイブを使用できる場合は、ハイブ テーブルを作成し、単純な選択クエリを発行するのが最も簡単なオプションです。
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 を参照してください。変更されたスキーマが元のスキーマと互換性があることを確認してください。
寄木細工のファイルをネイティブに解析する apache drill を使用することもできます。