Мне нужно создать внешнюю таблицу кустов из местоположения hdfs, где один столбец в файле имеет зарезервированное имя (конец).
При запуске скрипта я получаю сообщение об ошибке: «не удается распознать ввод около 'end' 'STRUCT' '<' в спецификации столбца" </p>
Я нашел 2 решения.
Первый - установить hive.support.sql11.reserved.keywords = false, но эта опция была удалена.https://issues.apache.org/jira/browse/HIVE-14872
Второе решение заключается в использовании заключенных в кавычки идентификаторов (column
).
Но в этом случае я получаю ошибку: "org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: непредвиденный символ ('c' (код 99)): ожидал запятую для разделения записей OBJECT "
Это мой код для создания таблицы:
CREATE TEMPORARY EXTERNAL TABLE ${tmp_db}.${tmp_table}
(
id STRING,
email STRUCT<string:STRING>,
start STRUCT<long:BIGINT>,
end STRUCT<long:BIGINT>
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '${input_dir}';
Невозможно переименовать столбец.
Кто-нибудь знает решение этой проблемы?Или, может быть, какие-нибудь идеи?Заранее большое спасибо!