gpt4 book ai didi

json - HIVE 以 json 格式插入覆盖目录

转载 作者:可可西里 更新时间:2023-11-01 14:13:00 32 4
gpt4 key购买 nike

如何使用 json 模式插入覆盖目录?

有原始的 Hive avro 表;(这个其实有很多字段)

tb_test--------
name string
kickname string
-----------------

然后我想通过 jsonserde 将查询结果保存到 hdfs 中的某个目录中。

我试过了。

insert overwrite directory '/json/'
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
WITH SERDEPROPERTIES (
"stat_name"="$._col0",
"stat_interval"="$._col1"
)
STORED AS TEXTFILE
select name, nickname
from tb_test limit 100

但是写在/json/中的json有_colXX字段名,而不是origin字段名。

{"_col0":"basic_qv"," _col1":"h"}
{"_col0":"basic_qv","_col1 ":"h"}
{"_col0":"basic_qv","_col1 ":"h"}
{"_col0":"basic_qv"," _col1":"h"}
{"_col0":"basic_qv","_col1 ":"h"}

我以为

{"name":"basic_qv","nickname":"h"}
{"name":"basic_qv","nickname":"h"}
{"name":"basic_qv","nickname":"h"}
{"name":"basic_qv","nickname":"h"}
{"name":"basic_qv","nickname":"h"}

有什么帮助?

谢谢!!

最佳答案

这里似乎描述了解决方法(将 JsonUDF 与 named_struct 结合使用)的问题:https://github.com/rcongiu/Hive-JSON-Serde/issues/151

extract.hql:
add jar /home/myuser/lib/json-udf-1.3.8-SNAPSHOT-jar-with-dependencies.jar;
create temporary function tjson as 'org.openx.data.udf.JsonUDF';

insert overwrite local directory '/json/'
select
tjson(named_struct("name", t.name,"nickname", t.nickname))
from tb_test t
;

您还可以创建基于 JsonSerDe 的表并定义列,插入覆盖它并使用表位置而不是目录。

关于json - HIVE 以 json 格式插入覆盖目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795281/

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