1

由于错误,我有以下数据:

{
  "eventType": "something",
  "details": {
    "userName": "NotSet",
    "username": "test@email.com"
  },
  "createdAt": 3
}

创建表工作:

CREATE EXTERNAL TABLE tbl (
         eventType string,
         `createdAt` string,
         details string 
) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
 LOCATION 's3://xx/yy'

但是,当我查询(尝试对字符串、结构、映射的详细信息,始终相同)时,我得到了重复键错误:

HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Duplicate key "username"

如果您将它们用作行列,而不是用作映射键甚至字符串,它们是重复的,为什么会失败?可以跳过,org.apache.hive.hcatalog.data.JsonSerDe但我不喜欢它,因为 %99.5 数据是这样的。org.apache.hive.hcatalog.data.JsonSerDe总是失败。

4

2 回答 2

1

Presto 不支持区分大小写的列名(它们总是转换为小写),因此不可能有多个仅区分大小写的列。

于 2018-12-25T17:51:36.107 回答
1

现在可以设置一个参数以适应仅因情况而异的键。名称是case.insensitive并且应该设置为FALSE

例子:

ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ("case.insensitive" = "FALSE")

https://docs.aws.amazon.com/athena/latest/ug/json-serde.html#openx-json-serde

于 2022-02-08T12:58:18.240 回答