Javaから寄木細工のファイルを作成する方法はありますか?
メモリ(Javaクラス)にデータがあり、後でApache-drillから読み取るために、データを寄木細工のファイルに書き込みたいです。
SQLテーブルにデータを挿入するような簡単な方法はありますか?
GOT IT
助けてくれてありがとう。
回答とこれを組み合わせる link で、寄木細工のファイルを作成し、ドリルでそれを読み戻すことができました。
ParquetWriterのコンストラクターは推奨されていませんが(1.8.1)、ParquetWriter自体はサポートされていません。その内部で抽象ビルダーサブクラスを拡張することにより、ParquetWriterを作成できます。
ここに寄木細工の作成者自身の例 ExampleParquetWriter :
public static class Builder extends ParquetWriter.Builder<Group, Builder> {
private MessageType type = null;
private Map<String, String> extraMetaData = new HashMap<String, String>();
private Builder(Path file) {
super(file);
}
public Builder withType(MessageType type) {
this.type = type;
return this;
}
public Builder withExtraMetaData(Map<String, String> extraMetaData) {
this.extraMetaData = extraMetaData;
return this;
}
@Override
protected Builder self() {
return this;
}
@Override
protected WriteSupport<Group> getWriteSupport(Configuration conf) {
return new GroupWriteSupport(type, extraMetaData);
}
}
GroupとGroupWriteSupport(Parquetにバンドルされているが、データモデル実装の例としてのみ使用する)を使用したくない場合は、Avro、プロトコルバッファー、またはThriftのインメモリデータモデルを使用できます。これは、Avroを使用してParquetを記述する例です。
try (ParquetWriter<GenericData.Record> writer = AvroParquetWriter
.<GenericData.Record>builder(fileToWrite)
.withSchema(schema)
.withConf(new Configuration())
.withCompressionCodec(CompressionCodecName.SNAPPY)
.build()) {
for (GenericData.Record record : recordsToWrite) {
writer.write(record);
}
}
これらの依存関係が必要になります。
<dependency>
<groupId>org.Apache.parquet</groupId>
<artifactId>parquet-avro</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.Apache.parquet</groupId>
<artifactId>parquet-hadoop</artifactId>
<version>1.8.1</version>
</dependency>
完全な例 ここ 。
それを行うためのいくつかの可能な方法:
text_table
。詳細については、Impalaの Create Table Statement を参照してください。parquet_table
。insert into parquet_table select * from text_table
すべてのデータをテキストファイルから寄木細工のテーブルにコピーします。