Как установить значение столбца по умолчанию при переносе данных Hive в DynamoDB

Я хочу установить значение ключа диапазона по умолчанию при копировании данных HDFS в Dynamo. Пока у меня есть это, которое выполняет прямое сопоставление, где ввод - 3 столбца, а БД - 3 столбца:

CREATE EXTERNAL TABLE hdfs_table (a_col string, b_col string, c_col string)
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
 LOCATION "hdfs:///blahblah";

CREATE EXTERNAL TABLE dynamodb_table (c1 string, c2 string, c3 string)
 STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
 TBLPROPERTIES ("dynamodb.table.name" = "output_table",
                "dynamodb.column.mapping" = "c1:id,c2:timestamp,c3:data");

INSERT OVERWRITE TABLE dynamodb_table SELECT * FROM hdfs_table;

Я создал новую таблицу вывода с ключом диапазона, который в основном представляет собой четвертый столбец. Я хотел бы установить для ключа диапазона значение, которое передается в качестве параметра этому скрипту. Полагаю, я хотел бы сделать что-то вроде SQL ALTER и SET DEFAULT. Любые указатели будут оценены.


person dan    schedule 05.06.2013    source источник


Ответы (1)


Я не уверен, поддерживает ли hive команды типа SQL Alter и Set Default! вы можете попробовать косвенный способ, вставив новый столбец вместе со своими столбцами в hdfs_table. Например,

INSERT into TABLE new_table SELECT hdfs_table.a_col, hdfs_table.b_col, hdfs_table.c_col, 
case when([your condition]) then [set your default value] end as d_col
FROM hdfs_table
person mehdi hosseini    schedule 20.08.2013