私は今、kafkaのデータを消費してハイブに入れる仕事をしているシステムを開発しています。テーブルには「day」というパーティションがあるので、hdfs上のこのパーティションの場所は/root/tableLocation/day=20161110/adfadfaaf.avro
になります。java apiを使用してHiveパーティションの場所を変更できますか?
Table table = new Table(database, tableName);
table.setTableType(TableType.EXTERNAL_TABLE);
table.getParameters().put("EXTERNAL", "TRUE");
String tablePath = FileUtils.hiveDirectoryName(url, topicsDir, tableName);
table.setDataLocation(new Path(tablePath));
table.setSerializationLib(avroSerde);
try {
table.setInputFormatClass(avroInputFormat);
table.setOutputFormatClass(avroOutputFormat);
} catch (HiveException e) {
throw new HiveMetaStoreException("Cannot find input/output format:", e);
}
List<FieldSchema> columns = HiveSchemaConverter.convertSchema(schema);
table.setFields(columns);
table.setPartCols(partitioner.partitionFields());
:
しかし、この場所は私のrequirement.Iを満たすことができないが、/root/tableLocation/20161110/adfadfaaf.avro .
にこの場所を変更したい私はテーブルがこのようなものです作成したとき、私は使用していますAPIは、Apacheハイブmetastore.Demoコードです
コードから、私はテーブルの場所を設定することができます しかし、私の質問は、パーティションの場所を設定する方法はありますか?
この情報は、この情報がメタデータの一部である必要があるとは思わない... –