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会有所改进。


目录
打赏
0
0
0
0
29
分享
相关文章
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
1051 1
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
104 1
为什么SQL日志文件很大,该如何处理?
为什么SQL日志文件很大,该如何处理?
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
91 0
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
201 0

热门文章

最新文章

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问