pyspark 将多列转为json
时间: 2023-09-04 17:12:56 浏览: 54
可以使用 `to_json` 函数将多列转为 JSON 格式。
例如,假设有以下 DataFrame:
```
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Alice | 25 |
| 2 | Bob | 30 |
+----+-------+------+
```
如果要将 `id`、`name`、`age` 列转为 JSON 字符串,可以使用以下代码:
```python
from pyspark.sql.functions import to_json, struct
df.select(to_json(struct("id", "name", "age")).alias("json")).show(truncate=False)
```
结果如下:
```
+--------------------------+
|json |
+--------------------------+
|{"id":1,"name":"Alice","age":25}|
|{"id":2,"name":"Bob","age":30} |
+--------------------------+
```
相关问题
pyspark list 转为json
可以使用Python内置的`json`模块将PySpark的list转换为JSON格式。下面是一个简单的示例:
```python
import json
from pyspark.sql.functions import collect_list
# 创建一个PySpark DataFrame
df = spark.createDataFrame([(1, 'a'), (2, 'b'), (1, 'c')], ['id', 'value'])
# 使用collect_list函数将value列转换为list
list_col = df.groupBy('id').agg(collect_list('value').alias('values')).collect()
# 将list转换为JSON格式
json_string = json.dumps([{'id': row.id, 'values': row.values} for row in list_col])
# 打印JSON字符串
print(json_string)
```
输出:
```
[{"id":1,"values":["a","c"]},{"id":2,"values":["b"]}]
```
PySpark RDD 转为JSON字符串
可以使用 PySpark 的 map() 函数将 RDD 转换为字典,然后使用 json.dumps() 函数将字典转换为 JSON 字符串。
例如,假设有一个 PySpark RDD,其中包含以下数据:
```python
rdd = sc.parallelize([(1, 'John', 25), (2, 'Emily', 30), (3, 'Adam', 40)])
```
可以使用以下代码将 RDD 转换为 JSON 字符串:
```python
import json
json_rdd = rdd.map(lambda x: {'id': x[0], 'name': x[1], 'age': x[2]})
json_string = json.dumps(json_rdd.collect())
```
这将返回以下 JSON 字符串:
```json
"[{\"id\": 1, \"name\": \"John\", \"age\": 25}, {\"id\": 2, \"name\": \"Emily\", \"age\": 30}, {\"id\": 3, \"name\": \"Adam\", \"age\": 40}]"
```