Spark SQL 支持将 JSON 数据解析为表中的行。你可以使用
spark.read.json
函数读取 JSON 数据并创建为
DataFrame
。例如,假设你有如下的 JSON 文件:
{"name":"Alice", "age":25, "city":"New York"}
{"name":"Bob", "age":30, "city":"Los Angeles"}
你可以这样来读取这个 JSON 文件并解析:
df = spark.read.json("/path/to/file.json")
df.show()
这将输出下面的内容:
+---+--------+---------+
|age| city| name|
+---+--------+---------+
| 25|New York| Alice|
| 30|Los Angeles| Bob|
+---+--------+---------+
你也可以使用 SQL 语句来查询 JSON 数据。例如,你可以将 JSON 数据注册成临时视图,然后使用 SELECT 语句来查询数据:
df.createOrReplaceTempView("people")
spark.sql("SELECT * FROM people WHERE age > 26").show()
这将输出下面的内容:
+---+--------+----+
|age| city|name|
+---+--------+----+
| 30|Los Angeles|Bob|
+---+--------+----+
如果你的 JSON 数据有复杂的嵌套结构,你可以使用 get_json_object 函数来获取特定的值:
df.select(
get_json_object(df.json, "$.name").alias("name"),
get_json_object(df.json, "$.age").alias("age"),
).show()
这将输出下面的内容:
+---------+---+
| name|age|
+---------+---+
| Alice| 25|
| Bob| 30|
+---------+---+
希望这能帮到你。