hive基于json格式创建hive表


由于前段的数据是json格式的,因此想基于json建表。

导入json解析包
首先需要引入json的hive解析包。
我使用的是cdh5.13.3,在这里下载了hive-hcatalog-core的包
hive-hcatalog-core下载地址
hive里是使用命令添加jar包

add jar hdfs:///user/hive/jars/hive-hcatalog-core-1.1.0-cdh5.13.3.jar;

添加了之后便可根据json的内容建表了
##基于sjon文件建表##
单条json文本的内容

{
    "prims": {
        "PLCOrderCode": "6ES7 313-5BF03-0AB0",
        "PLCName": "SIMP-PLC_23",
        "WorkShop": "",
        "ProductLine": "",
        "DateTime": "10/30/2018 16:00:29:730",
        "DeviceName": ""
    },
    "params": {
        "A1_LL_P_Alarm": "ON"
    }
}

hive建表语句

create external table if not exists plc_data
(
PRIMS map<string,string> comment "plc基础信息", 
PARAMS map<string,string> comment "plc明细信息"
)comment "plc数据汇总表"
partitioned by (partition_day string)
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION
  'hdfs:///data/flink/plc_data/';

serde格式注意是 org.apache.hive.hcatalog.data.JsonSerDe
将数据放置到相应的hdfs目录下面:

/data/flink/plc_data/partition_day=20181101

这里注意文件目录名称是partition_day=20181101
这个名称根据你的数据分区而定,使用命令挂在分区目录

alter table plc_data add partition (partition_day=20181101);
1
查询数据看下结果:

hive> select prims['PLCOrderCode'],params from plc_data;
OK
6ES7 313-5BF03-0AB0     {"A1_LL_P_Alarm":"ON"}
Time taken: 1.177 seconds, Fetched: 1 row(s)

大功告成!
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值