Amazon Athena:更改表以忽略格式错误的json错误

时间:2018-11-30 16:33:05

标签: json hive amazon-athena

这不起作用: ALTER TABLE'table'SET SERDEPROPERTIES(“ ignore.malformed.json” =“ true”);

1 个答案:

答案 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   语法。
  •