hive>create table tmp2 as
SELECT *
FROM tmp1
LATERAL VIEW explode(value) itemTable AS items;
步骤11)创建配置单元表并从tmp2表加载值
hive>create table books as
select value[0].id as id, value[0].bookname as name, value[0].properties.subscription as subscription, value[0].properties.unit as unit from tmp2;
2条答案
按热度按时间nnt7mjpx1#
发布端到端解决方案。将json转换为配置单元表的分步过程:
步骤1)如果还没有安装maven,请安装它
>$ sudo apt-get install maven
步骤2)如果还没有安装git,请安装git>sudo git clone https://github.com/rcongiu/Hive-JSON-Serde.git
步骤3)进入$home/hive-json\u serde文件夹步骤4)构建serde包
>sudo mvn -Pcdh5 clean package
步骤5)serde文件将位于$home/hive json serde/json serde/target/json-serde-1.3.7-snapshot-jar-with-dependencies.jar中步骤6)在配置单元中添加serde作为依赖项jar
步骤7)在$home/books.json中创建json文件(示例)
步骤8)在配置单元中创建tmp1表
步骤9)将数据从json加载到tmp1表
步骤10)创建一个tmp2表从tmp1执行分解操作,这个中间步骤是将多级json结构分解为多行注意:如果您的json结构简单且是单层的,请避免这个步骤
步骤11)创建配置单元表并从tmp2表加载值
步骤12)删除tmp表
步骤13)测试配置单元表
输出:
id名称订阅单元
1 b 1第3年
2 b 2年5
5ssjco0h2#
您可以通过实现hiveserde将json导入到配置单元中。
此链接用作示例实现。
https://github.com/rcongiu/hive-json-serde
你也可以参考这些链接
如何用json数据生成配置单元表?