这不起作用: ALTER TABLE'table'SET SERDEPROPERTIES(“ ignore.malformed.json” =“ true”);
答案 0 :(得分:1)
您遇到的问题是Athena uses the presto language不是DDL的蜂巢语言。将Athen(Presto)视为一种subset of the Hive language,同时仍是功能齐全的ansi-SQL语言。很遗憾,您要使用的命令是not a supported DDL statement。
您将不得不重新创建表,添加属性:
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';
为完整性起见,我将添加latest SerDe documentation
Hive JSON SerDe
Hive JSON SerDe用于处理JSON数据,大多数 常见事件。这些事件表示为 用新行分隔的JSON编码文本。
您还可以使用Hive JSON SerDe解析更复杂的 具有嵌套结构的JSON编码数据。但是,这需要 具有代表复杂数据类型的匹配DDL。
OpenX JSON SerDe
此SerDe具有有用的属性,您可以在何时指定 在雅典娜中创建表格,以帮助解决 数据:
- 'ignore.malformed.json'如果设置为TRUE,则可跳过格式错误的JSON 语法。