当前位置: 首页 > article >正文

二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺

一、目的

在用Flume把Kafka的数据采集写入Hive的ODS层表的HDFS文件路径后,发现HDFS文件中没问题,但是ODS层表中字段的数据却有问题,字段中的JSON数据不全

二、Hive处理JSON数据方式

(一)将Flume采集Kafka的JSON数据以字符串的方式整个写入Hive表中,然后再用get_json_object或json_tuple进行解析

1、ODS层建静态分区外部表,Flume直接写入ODS层表的HDFS路径下

create external table  if not exists  ods_evaluation(
   evaluation_json  string
)
comment '评价数据外部表——静态分区'
partitioned by (day string)
stored as SequenceFile
;

2、用get_json_object进行解析

select
        get_json_object(evaluation_json,'$.deviceNo')        device_no,
        get_json_object(evaluation_json,'$.createTime')      create_time,
        get_json_object(evaluation_json,'$.cycle')           cycle,
        get_json_object(evaluation_json,'$.laneNum')         lane_num,
        get_json_object(evaluation_json,'$.evaluationList')   evaluation_list
from hurys_dc_ods.ods_evaluation
;

(二)在导入Hive表之前将JSON数据已拆分好,需要使用JsonSerDe

create  external  table  if not exists ods_track(
     device_no    string     comment '设备编号',
     create_time  timestamp  comment '创建时间',
     track_data   string     comment '轨迹数据集合(包含多个目标点)'
)
comment '轨迹数据表——静态分区'
partitioned by (day  date)
row format serde  'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
"separatorChar" = ",",
"quoteChar" = "\"",
"escapeChar" = "\\"
)
tblproperties("skip.header.line.count"="1") ; 

注意:使用JsonSerDe时,每行必须是一个完整的JSON,一个JSON不能跨越多行,否则不能使用JsonSerDe

三、ODS层原有建表SQL

create external table  if not exists  ods_evaluation(
   evaluation_json  string
)
comment '评价数据外部表——静态分区'
partitioned by (day string)
row format delimited fields terminated by '\x001'
lines terminated by '\n'
stored as SequenceFile
;

四、HDFS文件中的数据

HDFS文件中JSON数据完整,数据没问题

五、报错详情

查看表数据时发现evaluation_json字段的数据不完整

六、解决方法

(一)重新建表,建表语句中删除其中两行

--row format delimited fields terminated by '\x001'
--lines terminated by '\n'

(二)新建表SQL

create external table  if not exists  ods_evaluation(
   evaluation_json  string
)
comment '评价数据外部表——静态分区'
partitioned by (day string)
stored as SequenceFile
;

七、查询新表中evaluation_json字段的数据

数据解析成功!

又解决了一个问题,宾果!


http://www.kler.cn/news/161743.html

相关文章:

  • Python 适合做什么?
  • 关于popen执行命令无效,但是手动命令行执行有效的问题
  • redis查看统计信息
  • 智能优化算法应用:基于蛇优化算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 题目:回文判定(蓝桥OJ 1371)
  • MacBook安装方正小标宋简体和仿宋GB2312
  • NLP自然语言处理学习笔记
  • Data Mining数据挖掘—2. Classification分类
  • 华清远见嵌入式学习——QT——作业1
  • CoreDNS实战(二)-CoreDNS+ETCD实现DNS服务发现
  • 陈睿接手一年后,B站全力一搏的游戏业务怎样了
  • ORA-01502: index ‘xxx‘ or partition of such index is in unusable state
  • Shell实操(九):判断输入内容直至指定内容退出
  • 12.Java程序设计-基于Springboot框架的Android学习生活交流APP设计与实现
  • Flume 安装部署
  • 记账中心二开
  • 二十一章网络通信
  • 【ArcGIS Pro微课1000例】0041:Pro强大的定位搜索功能、定位窗格、地图上查找地点
  • Python搭建代理IP池实现接口设置与整体调度
  • Spring IoC和DI
  • 接口测试方向
  • 【Java】集合 之 使用 Set
  • 同时增强多个目标:masks, bounding boxes, keypoints
  • 2-4、DEBUG和源程序区别
  • 根据既定数组创建数组的方法汇总 (第3讲)
  • hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED
  • Kafka Connect :构建强大分布式数据集成方案
  • 【计算机网络学习之路】HTTP请求
  • C# Solidworks二次开发:三种获取SW设计结构树的方法-第一讲
  • 计算整数各位数字之和 C语言xdoj29