Я сейчас разрабатываю систему, чья задача состоит в том, чтобы потреблять данные от kafka и помещать ее в куст. Поскольку таблица имеет раздел «день», поэтому расположение этого раздела в hdfs будет /root/tableLocation/day=20161110/adfadfaaf.avro
.Могу ли я изменить местоположение раздела Hive с помощью java api?
Но это место не может удовлетворить мои requirement.I хотят изменить это место для /root/tableLocation/20161110/adfadfaaf.avro .
АНИ я использую Apache улей код metastore.Demo когда я создаю таблицу, как это:
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());
из кода, я могу установить расположение таблицы, , но мой вопрос в том, есть ли способ установить местоположение раздела?
Я думаю, что нет, поскольку эта информация должна быть частью метаданных ... –