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

这篇具有很好参考价值的文章主要介绍了二百一十、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
;

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

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——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺,Hive,hive,flume,hadoop

(二)在导入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数据完整,数据没问题

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

五、报错详情

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

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

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

六、解决方法

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

--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字段的数据

数据解析成功!

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

又解决了一个问题,宾果!文章来源地址https://www.toymoban.com/news/detail-776275.html

到了这里,关于二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 一百一十三、DBeaver——从hive同步数据到clickhouse

    一百一十三、DBeaver——从hive同步数据到clickhouse

    目标:把hive的DM层结果数据导出到clickhouse数据库,试了kettle、sqoop等多种方法都报错,尤其是kettle,搞了大半天发现还是不行。结果目前就只能用DBeaver同步数据。 准备工作:hive和clickhouse中都建好表 第一步,右击clickhouse中的表,选择导入数据 第二步,在源类型和格式中,由

    2024年02月13日
    浏览(16)
  • 一百一十一、Hive——从HDFS到Hive的数据导入(静态分区、动态分区)

    一百一十一、Hive——从HDFS到Hive的数据导入(静态分区、动态分区)

    分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹, Hive 中的分区就是分目录 ,把一个大的数据集根据业务需要分割成小的数据集。 在查询时通过 where 子句中的表达式选择查询所需要的指定的分区,这样的查询效率 会提高很多,所以我们需要把常常用在where 语句中

    2024年02月12日
    浏览(44)
  • 二百一十八、Hadoop——Hadoop启动报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

    二百一十八、Hadoop——Hadoop启动报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

    在完成Flume拓扑结构之聚合的开发案例,启动了hurys23服务器早已安装好的Hadoop,结果居然报错了 hurys23: Permission denied ( publickey,gssapi-keyex,gssapi-with-mic,password ). 启动Hadoop发现报错后,jps查看一下,发现之启动了ResourceManager服务 [root@hurys23 ~]# jps 4096 ResourceManager 4823 Jps 根据报错提

    2024年02月02日
    浏览(8)
  • 第一百一十九回 如何通过蓝牙设备读写数据

    我们在上一章回中介绍了如何获取蓝牙状态相关的内容,本章回中将介绍 如何通过蓝牙设备读写数据 。闲话休提,让我们一起Talk Flutter吧。 通过蓝牙设备读写数据有两种方法: 一种是读写Characteristics; 一种是读写Descriptor. 我们在本章回中介绍的读写数据本质上是读写 Cha

    2024年02月12日
    浏览(11)
  • JAVA面试题分享五百一十一:Spring Boot基于WebUploader实现超大文件上传和断点续传

    JAVA面试题分享五百一十一:Spring Boot基于WebUploader实现超大文件上传和断点续传

    目录 前言 目标 实现思路 大文件分片 合并分片 断点续传 代码实现 1、webuploader组件中,分片上传怎么开启? 2、webuploader组件中,文件的md5值如何计算? 3、webuploader组件中,分片文件的md5值如何计算? 4、webuploader组件中,分片上传的的请求在哪里触发? 5、前端、后端如何校

    2024年02月19日
    浏览(13)
  • 第一百一十八回 如何获取蓝牙连接状态

    我们在上一章回中介绍了如何连接蓝牙设备相关的内容,本章回中将介绍如何获取蓝牙连接状态.闲话休提,让我们一起Talk Flutter吧。 我们在上一章回中介绍如何连接蓝牙设备,但是如何知道蓝牙设备是否连接成功呢?这就需要我们去获取蓝牙设备的连接状态,通过蓝牙设备

    2024年02月12日
    浏览(12)
  • Android之关机/重启/recovery模式(一百一十五)

    1.方式一:App调用系统api 2.方式二:setprop 注意:在init的reboot.c中,           adb reboot -p命令其实就是调用的setprop命令开关机的。  3.方式三:

    2024年02月14日
    浏览(15)
  • 第一百一十二回 flutter_screenutil包

    我们在上一章回中介绍了屏幕适配相关的内容,本章回中将介绍 flutter_screenutil 包,该包主要用来实现屏幕适配.闲话休提,让我们一起Talk Flutter吧。 我们在本章回中介绍的包是 flutter_screenutil ,它主要用来做屏幕和字体大小的适配,它的实现原理和我们在上一章回中介绍的屏幕

    2024年02月13日
    浏览(11)
  • Emacs之实现跨程序选中自动复制功能(一百一十八)

    Emacs之实现跨程序选中自动复制功能(一百一十八)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月15日
    浏览(20)
  • Emacs之改造最快文本搜索工具ripgrep(一百一十九)

    Emacs之改造最快文本搜索工具ripgrep(一百一十九)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月15日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包