Spark SQL - JSON数据集
2018-12-20 16:37 更新
Spark SQL可以自动捕获JSON数据集的模式,并将其作为DataFrame加载。 可以使用SQLContext.read.json()对String或JSON文件的RDD进行此转换。
Spark SQL提供了一个选项,用于查询JSON数据以及自动捕获用于读取和写入数据的JSON模式。 Spark SQL了解JSON数据中的嵌套字段,并允许用户直接访问这些字段,而无需任何显式转换。
例
让我们考虑一个名为employee.json的文本文件中的员工记录示例。 使用以下命令创建DataFrame(df)。
使用以下内容读取一个名为employee.json的JSON文档,并根据JSON文档中的模式生成一个表。
DataFrame操作
DataFrame为结构化数据操作提供了一个领域特定的语言。 这里我们包括使用DataFrames的结构化数据处理的一些基本示例。
按照以下步骤执行DataFrame操作 -
阅读JSON文档
首先,我们必须读取JSON文档。 基于此,生成名为dfs的DataFrame。
使用以下命令读取名为employee.json的JSON文档,其中包含字段 - id,name和age。 它创建一个名为dfs的DataFrame。
Spark SQL提供了一个选项,用于查询JSON数据以及自动捕获用于读取和写入数据的JSON模式。 Spark SQL了解JSON数据中的嵌套字段,并允许用户直接访问这些字段,而无需任何显式转换。
例
让我们考虑一个名为employee.json的文本文件中的员工记录示例。 使用以下命令创建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"} }让我们对给定的数据执行一些数据帧操作。
DataFrame操作
DataFrame为结构化数据操作提供了一个领域特定的语言。 这里我们包括使用DataFrames的结构化数据处理的一些基本示例。
按照以下步骤执行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的Structure(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格式,而不管数据源的来源。
以上内容是否对您有帮助:
更多建议: