spqrk sql处理json 列表
时间: 2023-07-28 19:05:04 浏览: 41
SPARK SQL可以处理JSON列表。Spark提供了一个内置的函数`from_json`,用于将JSON字符串转换为数据结构,并将其应用到DataFrame的列。这个函数需要一个包含JSON schema的结构化字符串作为参数。
首先,我们需要定义一个包含JSON数据的DataFrame,然后使用`from_json`函数将JSON列转换为结构化数据。下面是一个示例代码:
```python
from pyspark.sql.functions import from_json
from pyspark.sql.types import StructType, StructField, StringType
# 定义JSON数据
data = [("John", '{"name": "John", "age": 30, "city": "New York"}'),
("Alice", '{"name": "Alice", "age": 25, "city": "Paris"}'),
("Bob", '{"name": "Bob", "age": 35, "city": "London"}')]
# 创建DataFrame
df = spark.createDataFrame(data, ["name", "json_data"])
# 定义JSON结构
schema = StructType([
StructField("name", StringType(), True),
StructField("age", StringType(), True),
StructField("city", StringType(), True)
])
# 将JSON列转换为结构化数据
df = df.withColumn("data", from_json(df.json_data, schema))
# 选择需要的列
df = df.select("name", "data.age", "data.city")
# 查看结果
df.show()
```
以上代码定义了一个DataFrame,其中包含"name"和"json_data"两列。然后使用`from_json`函数将"json_data"列转换为包含"name","age"和"city"的结构化数据。最后,选择需要的列并展示结果。
通过使用`from_json`函数,我们可以方便地处理JSON列表数据,并在Spark SQL中进行分析和查询。