Проблема, с которой вы столкнулись, заключается в том, что Афина использует язык престо , а не язык улья для DDL.Думайте об Афинах (Presto) как о подмножестве языка Hive , в то время как он все еще является полнофункциональным языком ANSI-SQL.К сожалению, вы пытаетесь использовать команду , которая не поддерживается оператором DDL , к сожалению.
Вам придется воссоздать таблицу , добавив свойства:
CREATE EXTERNAL TABLE impressions (
id string,
awesomeness struct<
modellookup:string,
requesttime:string>
) PARTITIONED BY (dt string)
ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties ( 'ignore.malformed.json'='true' )
LOCATION 's3://myregion.awesome/awesome';
НЕ ЭТО ОДИН (ignore.malformed.json недоступен)
CREATE EXTERNAL TABLE impressions (
id string,
awesomeness struct<
modellookup:string,
requesttime:string>
) PARTITIONED BY (dt string)
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
with serdeproperties ( 'paths'='id' )
LOCATION 's3://myregion.awesome/awesome';
Я добавлю для полноты, что последняя документация SerDe
Hive JSON SerDe
Hive JSON SerDe используется для обработки данных JSON, чаще всего событий.Эти события представлены в виде блоков текста в кодировке JSON, разделенных новой строкой.
Вы также можете использовать Hive JSON SerDe для анализа более сложных данных в кодировке JSON с вложенными структурами.Однако для этого требуется наличие соответствующего DDL, представляющего сложные типы данных.
OpenX JSON SerDe
Этот SerDe имеет полезное свойство, которое можно указать при создании таблиц в Афине,чтобы помочь устранить несоответствия в данных:
- 'ignore.malformed.json', если задано значение TRUE, позволяет пропустить искаженный синтаксис JSON.