spark2 sql读取json文件的格式要求

简介: spark2 sql读取json文件的格式要求

spark2 sql读取json文件的格式要求


spark有多个数据源,json是其中一种。那么对于json格式的数据,spark在操作的过程中,可能会遇到哪些问题?

这里首先我们需要对json格式的数据有一定的了解。

json数据有两种格式:

1.对象表示

2.数组表示

二者也有嵌套形式。

比如我们创建一个个人信息的json。

{    "people": [
        {
            "name": "aboutyun",
            "age": "4"
        },
        {
            "name": "baidu",
            "age": "5"
        }
    ]
}

上面是一个比较常见的json。信息我们大致也能看出来:people表示的是表名,后面的内容为表的内容,包含了姓名和年龄。然而我们在使用spark读取的时候却遇到点小问题。上面内容保存为文件people.json,然后上传到hdfs的跟路径,进入spark-shell,读取json文件

val peopleDF=spark.read.json("/people.json")

打印schema

peopleDF.printSchema

b96d614fe3fd2e05586ed0b1e192efa1.jpg

这时候我们看到people并不是表名,而age和name也非列明。我们通过

peopleDF.show

展示列名

00da07c2cbcb6abbca1e7bf52c887736.jpg

也就是说我们如果带有"people"格式的信息,DataFrame就会被认为是列名。个人认为这是spark不太好的地方,应该可以改进。这里也可以自动读取为表名或则忽略,而不是默认为一个字段名称。


既然目前spark是这么做,那么我们该如何做,才能让spark正确的读取?

我们来尝试下面格式的json文件

[
    {
        "name": "aboutyun",
        "age": "4"
    },
    {
        "name": "baidu",
        "age": "5"
    }
]

操作是同样的方式

val peopleDF=spark.read.json("/people.json")


peopleDF.printSchema

cb2413cf98c6a5200ffbdb64b85d084b.jpg

接着我们来打印数据

peopleDF.show

5384a33ab56b58e2098d10016ba61461.jpg

这时候我们看到它能正确的显示数据了。

从上面我们看出spark对于json文件,不是什么格式都是可以的,需要做一定的修改,才能正确读取,相信以后spark会有所改进。


目录
相关文章
|
26天前
|
SQL 存储 API
Flink实践:通过Flink SQL进行SFTP文件的读写操作
虽然 Apache Flink 与 SFTP 之间的直接交互存在一定的限制,但通过一些创造性的方法和技术,我们仍然可以有效地实现对 SFTP 文件的读写操作。这既展现了 Flink 在处理复杂数据场景中的强大能力,也体现了软件工程中常见的问题解决思路——即通过现有工具和一定的间接方法来克服技术障碍。通过这种方式,Flink SQL 成为了处理各种数据源,包括 SFTP 文件,在内的强大工具。
90 15
|
2月前
|
JSON API 网络架构
【Azure 媒体服务】使用编码预设文件(Preset.json)来自定义编码任务 -- 创建视频缩略图
【Azure 媒体服务】使用编码预设文件(Preset.json)来自定义编码任务 -- 创建视频缩略图
|
17天前
|
XML JSON JavaScript
R JSON 文件
JSON: JavaScript Object Notation(JavaScript 对象表示法)。
57 29
|
9天前
|
XML JSON JavaScript
js的json格式
js的json格式
|
9天前
|
JSON 数据格式
Blob格式转json格式,拿到后端返回的json数据
文章介绍了如何将后端返回的Blob格式数据转换为JSON格式,并处理文件下载和错误提示。
21 0
Blob格式转json格式,拿到后端返回的json数据
|
10天前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
25 1
|
11天前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
40 2
|
21天前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
61 9
|
21天前
|
JSON 前端开发 JavaScript
JSON文件如何读取?
JSON文件如何读取?
50 5
|
8天前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
下一篇
无影云桌面