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

二百一十、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进行解析

selectget_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.lryc.cn/news/255043.html

相关文章:

  • 【开放集检测OSR】开放集检测和闭集检测的区别和联系:从模型角度进行理解
  • 【Flink】Flink核心概念简述
  • linux-tar命令、解压、压缩
  • Kafka Connect :构建强大分布式数据集成方案
  • 基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL
  • 创建vue项目:node.js下载安装、配置环境变量,下载安装cnpm,配置npm的目录、镜像,安装vue、搭建vue项目开发环境(保姆级教程一)
  • uni-app 微信小程序之好看的ui登录页面(一)
  • [ES]ElasticSearch强转日期的时区问题
  • YOLOv5结合BiFPN,如何替换YOLOv5的Neck实现更强的检测能力?
  • 3.PyTorch——常用神经网络层
  • 状态机的练习:按键控制led灯
  • 看图学源码之 CopyOnWriteArraySet源码分析
  • almaLinux centos8 下载ffmpeg离线安装包、离线安装
  • CSS3 属性: transition过渡 与 transform动画
  • TCP通讯
  • (NeRF学习)3D Gaussian Splatting Instant-NGP
  • uni-app 微信小程序之好看的ui登录页面(三)
  • Android 默认打开应用的权限
  • 2023年广东工业大学腾讯杯新生程序设计竞赛
  • FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码
  • SpringCloud | Dubbo 微服务实战——注册中心详解
  • PostGIS学习教程十一:投影数据
  • jQuery ajax读取本地json文件 三级联动下拉框
  • Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)
  • 深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图
  • Stable Diffusion 系列教程 - 1 基础准备(针对新手)
  • 听GPT 讲Rust源代码--src/tools(8)
  • Linux硬链接和软连接是什么?
  • LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
  • VS2015编译GDAL3.2.0+opencl+C#