SparkSQL 读写_JSON 小技巧 | 学习笔记

简介: 快速学习 SparkSQL 读写_JSON 小技巧

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段SparkSQL 读写_JSON 小技巧】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12057


SparkSQL 读写_JSON 小技巧

 

内容介绍:

一、toJSON 的场景

二、从 RDD 中直接读取 JSON 格式的 DateFrame

三、课堂总结

 

处理 JSON 格式文件的小技巧有两个,其一是通过 toJSON 可以将 DateFrame 转成 JSON 形式的 DateFrame;其二是可以直接从 RDD 读取 JSON 的 DateFrame。这两个小技巧都有其分别的适用场景,接下来就进行具体的学习。

 

一、toJSON 的场景

1、场景

处理完之后,DateFrame 中如果是一个对象,则要将其转化为 JSON,再将 JSON 发送给其他系统。如果其他的系统只支持 JSON 格式的数据,此时 SparkSQL 如果与各种系统进行整合的时,就必须进行转换,将 DateFrame 当中的对象转成 JSON 格式,再发送给其他系统。

2、应用

首先进入 IDEA 中,关闭其他无用的文件。

@Test

def json1(): unit = {

//创建新的方法,并将其命名为 json1

val df = spark.read

.Option("header", value = true)

.csv(path="dataset/BeijingPM20100101_20151231.csv" )

//读出一个关于北京 PM 值的数据集

df.toJSON.show ( )

//通过该数据集有一个方法 toJSON

//toJSON 的 API 应用较为强大,可以直接把 df 当中存放的对象直接转成 JSON 的字符串。正常情况下,这种转换需要使用一些外部工具才能把对象转换为 JSON,如 grows 或 fastjason 等。

}

}

运行代码,对比之前读出的北京 PM 值数据,原先数据有很多列,而现在的运行结果中仅剩一列,且 value 这一列中数据的格式是字符串。

image.png

可以发现每一条数据都转成了 JSON 字符串形式的数据。

3、补

上文中提到仅支持 JSON 数据格式的系统,这里进行举例说明。有一些之前遇到过的不特别常见的场景,需要把数据发往消息队列,但在发之前,要先用 Spark 进行处理,若处于这种情况下,消息队列的那一段只支持 JSON 格式的数据,此时就必须先把 DateFrame 原本的对象转成 JSON 格式再发到消息队列里,就会用到 toJSON。

 

二、从 RDD 中直接读取 JSON 格式的 DateFrame

1、场景

有一些场景则与上面所提到的将数据发往消息队列相反,如从消息队列里取出 JSON 格式的文件数据需要使用 SparkSQL 进行处理。从消息队列里取出的是 JSON 格式的数据,则应使用 SparkSQL 把 JSON 格式的数据转成对象形式的数据,再进行处理。

2、应

@Test

def json2(): unit = {

val df = spark.read

.Option("header", value = true)

.csv(path="dataset/BeijingPM20100101_20151231.csv" )

val jsonRDD = df.toJSON.rdd

//此时无法像读取文件一样直接读出 DateFrame,而经过 toJSON 之后则变成了一个 JSON 格式的 DateFrame。而通过 val jsonRDD = df.toJSON.rdd 又将其转换为 JSON 形式的 RDD。

spark.read.json (jsonRDD).show()

//通过 spark.read.json (jsonRDD)直接从 RDD 中读取

DateFrame,并查看结果。

}

}

运行结果显示在运行过程中又把 JSON 形式的数据转成了 DateFrame 的对象形式,且成功返回了结构信息。

image.png

这种场景偶尔也会遇到。

 

三、课堂总结

本节课主要介绍了两个知识点,第一个是把 Dateset[Object](对象形式)转为 Dateset[jsonString](JSON 格式),

第二个知识点是把 RDD[jsonString]转为 DateFrame,即转成 Dateset[Object]。

综上所述,本节课实际上学习了 JSON 和普通对象之间的相互转换,并通过 SparkSQL 提供了相应的支持。

相关文章
|
2月前
|
JSON 前端开发 Java
Spring mvc-文件上传与JSON-学习笔记
Spring mvc-文件上传与JSON-学习笔记
35 2
|
6月前
|
JSON 前端开发 数据格式
前端学习笔记202306学习笔记第三十七天-js-认识json数据2
前端学习笔记202306学习笔记第三十七天-js-认识json数据2
37 0
|
6月前
|
JSON 前端开发 数据格式
前端学习笔记202307学习笔记第六十天-json server的介绍和服务搭建1
前端学习笔记202307学习笔记第六十天-json server的介绍和服务搭建1
47 0
|
6月前
|
JSON 前端开发 数据格式
前端学习笔记202306学习笔记第三十七天-js-认识json数据1
前端学习笔记202306学习笔记第三十七天-js-认识json数据1
35 0
|
6月前
|
JSON 前端开发 数据格式
前端学习笔记202306学习笔记第三十七天-js-认识json数据3
前端学习笔记202306学习笔记第三十七天-js-认识json数据3
35 0
|
7月前
|
JSON 数据格式 Python
python读取exlce并转为json的学习笔记
python读取exlce并转为json的学习笔记
52 0
|
9月前
|
JSON 数据格式
java202303java学习笔记第四十六天-请求-日期参数&json参数1
java202303java学习笔记第四十六天-请求-日期参数&json参数1
55 0
|
9月前
|
JSON 数据格式
java202303java学习笔记第四十六天-请求-日期参数&json参数2
java202303java学习笔记第四十六天-请求-日期参数&json参数2
39 0
|
9月前
|
JSON 数据格式
java202304java学习笔记第六十二天-ssm-页面跳转-回显数据json格式字符串
java202304java学习笔记第六十二天-ssm-页面跳转-回显数据json格式字符串
51 0
|
JSON JavaScript 前端开发
Python学习笔记第二十六天(JSON)
Python学习笔记第二十六天讲解使用JSON、使用第三方库:Demjson的用法。
88 0
Python学习笔记第二十六天(JSON)