Создать внешнюю таблицу с форматом serde и дополнительным столбцом - HIVE - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь импортировать текстовый файл во внешнюю таблицу с дополнительным столбцом в кусте, например:


CREATE EXTERNAL TABLE IF NOT EXISTS bs.tbl_bt(
tp_registro string,
seq string,
num_a string,
dt_chamada string,
hr_chamada string,
num_b string,
pt_interconect string,
dur_rel_chamada string,
dur_tar_chamada string,
tp_servico string,
vl_liq_chamada string,
vl_brt_chamada string,
reserva string,
'${hiveconf:tez.task.operadora}' as operadora string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (input.regex = (.{1})(.{10})(.{21})(.{8})(.{6})(.{20})(.{10})(.{7})(.{7})(.{2})(.{11})(.{11})(.{29}).*)
STORED AS TEXTFILE
LOCATION '/gr/Fi/B/${hiveconf:tez.task.operadora}';

Что я делаю не так?

1 Ответ

0 голосов
/ 06 ноября 2019

Hive DDL не включает AS при определении столбца

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
 [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])] 

Итак, попробуйте просто

'${hiveconf:tez.task.operadora}' STRING 

Или, если вам действительно нужен столбец, чтобы всегда быть операдорой, затем удалитепеременная hiveconf

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableCreate/Drop/TruncateTable

Возможно, вы путаете оператор CTAS, в котором вы можете выбрать столбец в качестве другого имени при создании таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...