这不起作用:
ALTER TABLE 'table' SET SERDEPROPERTIES( "ignore.malformed.json" = "true");
elcex8rz1#
你的问题是雅典娜在ddl中使用的是presto语言而不是hive语言。可以将athen(presto)看作配置单元语言的一个子集,同时仍然是一种功能齐全的ansisql语言。很遗憾,您尝试使用的命令不是受支持的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文档配置单元json serde配置单元json serde用于处理json数据,最常见的是事件。这些事件表示为以新行分隔的json编码文本块。您还可以使用配置单元json serde来解析具有嵌套结构的更复杂的json编码数据。但是,这需要具有表示复杂数据类型的匹配ddl。openx json服务器这个serde有一个有用的属性,您可以在athena中创建表时指定,以帮助处理数据中的不一致:“ignore.malformed.json”如果设置为true,则可以跳过格式错误的json语法。
1条答案
按热度按时间elcex8rz1#
你的问题是雅典娜在ddl中使用的是presto语言而不是hive语言。可以将athen(presto)看作配置单元语言的一个子集,同时仍然是一种功能齐全的ansisql语言。很遗憾,您尝试使用的命令不是受支持的ddl语句。
必须重新创建表,添加以下属性:
不是这个(ignore.malformed.json不可用)
为了完整起见,我将添加最新的serde文档
配置单元json serde
配置单元json serde用于处理json数据,最常见的是事件。这些事件表示为以新行分隔的json编码文本块。
您还可以使用配置单元json serde来解析具有嵌套结构的更复杂的json编码数据。但是,这需要具有表示复杂数据类型的匹配ddl。
openx json服务器
这个serde有一个有用的属性,您可以在athena中创建表时指定,以帮助处理数据中的不一致:
“ignore.malformed.json”如果设置为true,则可以跳过格式错误的json语法。