Spark SQL - JSON 数据集

Spark SQL 可以自动捕获 JSON 数据集的模式并将其加载为 DataFrame。可以使用 SQLContext.read.json() 对字符串 RDD 或 JSON 文件进行此转换。

Spark SQL 提供了查询 JSON 数据的选项以及用于读取和写入数据的 JSON 模式的自动捕获。Spark SQL 理解 JSON 数据中的嵌套字段,并允许用户直接访问这些字段而无需任何显式转换。

示例

让我们考虑一个名为 employee.json 的文本文件中的 employee 记录的示例。使用以下命令创建 DataFrame (df)。

读取名为 employee.json 且包含以下内容的 JSON 文档,并根据 JSON 文档中的架构生成表。

employee.json − 将此文件放入当前 scala> 指针所在的目录中。

{
   {"id" : "1201", "name" : "satish", "age" : "25"}
   {"id" : "1202", "name" : "krishna", "age" : "28"}
   {"id" : "1203", "name" : "amith", "age" : "39"}
   {"id" : "1204", "name" : "javed", "age" : "23"}
   {"id" : "1205", "name" : "prudvi", "age" : "23"}
}

让我们对给定的数据执行一些 Data Frame 操作。

DataFrame 操作

DataFrame 为结构化数据操作提供了一种领域特定语言。这里我们包含了一些使用 DataFrame 进行结构化数据处理的基本示例。

按照下面给出的步骤执行 DataFrame 操作 −

读取 JSON 文档

首先,我们必须读取 JSON 文档。在此基础上,生成一个名为 dfs 的 DataFrame。

使用以下命令读取名为 employee.json 的 JSON 文档,其中包含字段 − id、name 和 age。它创建一个名为 dfs 的 DataFrame。

scala> val dfs = sqlContext.read.json("employee.json")

输出 − 字段名称自动取自 employee.json

dfs: org.apache.spark.sql.DataFrame = [age: string, id: string, name: string]

使用 printSchema 方法

如果要查看 DataFrame 的结构(Schema),请使用以下命令。

scala> dfs.printSchema()

输出

root
   |-- age: string (nullable = true)
   |-- id: string (nullable = true)
   |-- name: string (nullable = true)

显示数据

如果要显示 DataFrame 中的数据,请使用以下命令。

scala> dfs.show()

输出 − 您可以以表格格式查看员工数据。

<console>:22, took 0.052610 s
+----+------+--------+
|age |  id  |  name  |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
| 23 | 1204 | javed  |
| 23 | 1205 | prudvi |
+----+------+--------+

然后我们可以在其中运行不同的 SQL 语句。无论数据源来自哪里,用户都可以轻松地将数据迁移到 JSON 格式。

spark_sql_data_sources.html