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


目录
相关文章
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
11月前
|
SQL JSON 分布式计算
Spark SQL架构及高级用法
Spark SQL基于Catalyst优化器与Tungsten引擎,提供高效的数据处理能力。其架构涵盖SQL解析、逻辑计划优化、物理计划生成及分布式执行,支持复杂数据类型、窗口函数与多样化聚合操作,结合自适应查询与代码生成技术,实现高性能大数据分析。
780 2
|
XML JSON API
如何在 Postman 中上传文件和 JSON 数据
如果你想在 Postman 中同时上传文件和 JSON 数据,本文将带你一步一步地了解整个过程,包括最佳实践和技巧,让你的工作更轻松。
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
388 28
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
503 4
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
2191 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
940 13

热门文章

最新文章