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


目录
相关文章
|
4天前
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
1月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
49 3
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
197 12
|
1月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
148 1
|
1月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
1月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
2月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
38 0
|
2月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
77 0