gpt4 book ai didi

JSON Serde - 映射列名

转载 作者:可可西里 更新时间:2023-11-01 16:23:36 28 4
gpt4 key购买 nike

我正在使用映射列的 JSON-Serde 功能来重命名我的 json 文档中的列 'Customer ID' -> 'customer_id。我使用映射函数的原因是因为 HQL 不允许在 CREATE TABLE 定义中有空格。

json 文档如下所示:

{"browser":"Safari",
"device_uuid":"gftgbvnfg-ed1ae6de-e2df-11e1-4c20-00ef75f32667",
"custom":
{"Customer ID":"4985495}"
}

建表hive如下:

CREATE TABLE json_serde_test
(
browser STRING,
device_uuid STRING,
custom struct< customer_id : STRING >
)

ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('json.mappings' = 'custom.Customer ID:custom.customer_id')
STORED AS TEXTFILE;

当我尝试查询 json_serde_test 表时,自定义字段返回:

{"customer_id":null}

最佳答案

注意:我是 SerDe 的作者。自从我第一次从内存中回答以来,编辑答案是不正确的。这个可以用(已测试)

CREATE TABLE json_serde_test
(
browser STRING,
device_uuid STRING,
custom struct< customer_id : STRING >
)

ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('mapping.customer_id' = 'Customer ID')
STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH 'data.txt' OVERWRITE INTO TABLE json_serde_test;

映射的形式应该是:mapping.hive column=json column

我对其进行了测试,它可以正常工作:

hive> select custom from json_serde_test;
OK
{"customer_id":"4985495}"}

关于JSON Serde - 映射列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002399/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com