Json 内容转换为 Hive 所支持的文本格式2 | 学习笔记

简介: 快速学习 Json 内容转换为 Hive 所支持的文本格式2

开发者学堂课程【NiFi 知识精讲与项目实战(第三阶段)Json 内容转换为 Hive 所支持的文本格式2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/707/detail/12548


Json 内容转换为 Hive 所支持的文本格式2

内容介绍

一、课堂说明

二、实际操作演示


一、课堂说明

本节课进行实际的操作,将 Json 数据变更为 Hive 外表所支持的这样一个文本结构。在之前的案例中,已经把 Json的每一个单独的 Json 数据写入到的 Hive 上。但是这个格式它并不满足 Hive 的这个文本格式要求。接下来通过操作让它变更成 Hive 所支持的这个文本。


二、实际操作演示

首先第一步要把它切割以后的 Json 数据先提到 flowfile 的 Spilit 的当中,因为可以在后续变更的过程中,可以灵活的使用这个 Json 当中的属性值,能够灵活使用这些属性值,才可以更好的写入到 HDFS 中

image.png

添加一个处理器,这个处理器叫做 EvaluateJsonPath,添加完以后,先把它连接到的整体流程当中,应该把 split 连接过来。切割的单个对象到 EvaluateJsonPath,到 EvaluateJsonPath 以后,要对它进行一个处理,还要把的单个阶层对象,它里面的属性抽取出来到 HDFS,所以说这里面要把这个对象修改为 attribute, 默认的写入到 conent 的当中去。

image.png

修改完之后,通过这个加号,让填写这个属性的名称。那这个属性名字如果说不确定这个 Json 里面到底都有什么结构,可以这样,先让他运行,可以查看它的实际在对接当中的数据。

image.png

这三个全部启动成功,看到数据的流转,这个时候数据已经流转到这,可以把这个处理器停止, 随便找一个数据。查看具体值,把这个值复制完以后,粘贴到文本文件当中,那通过这个文件可以看到,它是一个 Json Object,通过格式化以后查看会更清晰。

image.png

这个时候可以看到在这个队列中保存这个数据它是一个 object 的,在这个 Object 当中它包含有 ID,name  mobile,email son-json 那它和数据中这些字段是一一保对应,Id mobile,email son-json 那它其实代表其中的一行数据。

image.png

获取它当中的这些数据,可以通过 Json past 来获取,这里的每一个属性值。也是 Json past 的最简单的用法,可以把它的名称,比如说这个第一个 ID,把这个 Id 添入到的自定义属性当中,是 flowfile 属性当中的,让他的名字叫做ID,方便后面去获取。然后他又弹一个框,这个框是它的 value 值,那这个值可以通过$.这样的方式,是的 Json 表达式来获取到它里面的 ID 这个属性。 然后继续把的这个 name 也获取到这是属性名称,它的值是$.name 。然后再继续添加按比如说的 moblie,这是叫做$.moblie。还有一个是$.email ,$.son-Json,然后进行保存。

image.png

可以让他运行, 那运行的话提前要先让他能够先让它连接上来。匹配的话,进行对接对于如果不匹配的话,他进行一个自连接。

image.png

现在这个对立式当中已经有数据,是直接启动 EvaluateJsonPath,他已经处理完。然后看最终的数据,随便找一个可以看到这个数据的内容是一样的,但是这个时候主要来看它的 ATTRIBUTES 是否增加,点击可以看到有一个叫 emal的属性,然后还有一个叫做 ID 的属性,还有一个手机号、名称属性,还有一个 son-Json 属性,也是说新添加这个属性,全部都添加成功。

image.png

接下来要进行下一步操作,先把这个队列当中的数据是清空,接下来添加 Repalce Text 的处理器,来将提出来的属性应用,把 conent 内容那种覆盖写入。投入一个新的处理器叫做 Repalce Text,然后他们两个也进行一个连接。

image.png

然后去设置 Repalce Text 他拿到新的 flowfile 以后还要去进行把的原来的这个文本替换掉。首先这个正则表达式是不需要进行修改,因为这个因为是要替换所有的文本内容,但是这块不能再这样写,这个 $1它是的指代原来的这个文本内容。 这个时候要通过的 NiFi 表达式,$()这样的方式,拿到刚才获取到新的 EvaluateJsonPath,比如说第一个 ID 拿到它,然后中间通过 tab 或者通过空格都可以。比如说这边通过 tab 来划分的来分割这个不同的途径。然后第二个是moblie,如果记不起来的话,可以复制。

image.png

一定要在后面再加一个换行。因为数据是行与行数据之间,需要进行换行的,像之前没有换行的时候行和行是挨着的,输入回车之后, 相当于点击 ok,输入回车可以按 Shift 键,然后再按 enter,这个时候可以看到他换行,再去保存的时候,它中间有一个换行符。

image.png

然后把更新策略改成 line-by-line,是每一行替换一次每行数据。有感叹号,有报错,让他进行一个自连接,失败以后留在自定义中,把它停掉,然后接下来走完整的流程,看看他是否能够正常的工作。

image.png最后启动,数据已经处理完,在这有5个数据输入进来,停止这个处理器,进入到 hdfs 当中。

image.png

在这个里面可以看到又有新增的数据,在这个数据当中,可以看到这里面的值已经变更为最新的数据格式,这个数据格式中间是通过 tab 键进行分割的。每一个数据通过换行键分割。

image.png

相关文章
|
6月前
|
存储 SQL Java
bigdata-18-Hive数据结构与存储格式
bigdata-18-Hive数据结构与存储格式
64 0
|
6月前
|
SQL 消息中间件 数据处理
DataX读取Hive Orc格式表丢失数据处理记录
DataX读取Hive Orc格式表丢失数据处理记录
253 0
|
6月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
128 1
|
SQL 存储 分布式计算
Hive学习---6、文件格式和压缩
Hive学习---6、文件格式和压缩
Hive学习---6、文件格式和压缩
|
SQL 存储 数据可视化
Hive 支持的文件存储格式(重点)
Hive 支持的文件存储格式(重点)
466 0
|
存储 SQL 文件存储
Hive主流文件存储格式对比
### Hive 主流文件存储格式对比 ### 1、存储文件的压缩比测试 ##### 1.1 测试数据
205 0
|
SQL JSON 数据库
Json 内容转换为 Hive 所支持的文本格式1 | 学习笔记
快速学习 Json 内容转换为 Hive 所支持的文本格式1
218 0
Json 内容转换为 Hive 所支持的文本格式1  |  学习笔记
|
存储 SQL NoSQL
Hive----存储格式
存储格式
240 0