PySpark 通过组合列创建一个 json 字符串
PySpark create a json string by combining columns
我有一个数据框。
from pyspark.sql.types import *
input_schema = StructType(
[
StructField("ID", StringType(), True),
StructField("Date", StringType(), True),
StructField("code", StringType(), True),
])
input_data = [
("1", "2021-12-01", "a"),
("2", "2021-12-01", "b"),
]
input_df = spark.createDataFrame(data=input_data, schema=input_schema)
我想执行一个转换,将一组列和内容组合成一个 json 字符串。要组合的列是提前知道的。输出应如下所示。
有什么建议的方法可以实现吗?
感谢对此的任何帮助。
您可以创建一个结构类型,然后转换为 json:
from pyspark.sql import functions as F
col_to_combine = ['Date','code']
output = input_df.withColumn('combined',F.to_json(F.struct(*col_to_combine)))\
.drop(*col_to_combine)
output.show(truncate=False)
+---+--------------------------------+
|ID |combined |
+---+--------------------------------+
|1 |{"Date":"2021-12-01","code":"a"}|
|2 |{"Date":"2021-12-01","code":"b"}|
+---+--------------------------------+
我有一个数据框。
from pyspark.sql.types import *
input_schema = StructType(
[
StructField("ID", StringType(), True),
StructField("Date", StringType(), True),
StructField("code", StringType(), True),
])
input_data = [
("1", "2021-12-01", "a"),
("2", "2021-12-01", "b"),
]
input_df = spark.createDataFrame(data=input_data, schema=input_schema)
我想执行一个转换,将一组列和内容组合成一个 json 字符串。要组合的列是提前知道的。输出应如下所示。
有什么建议的方法可以实现吗? 感谢对此的任何帮助。
您可以创建一个结构类型,然后转换为 json:
from pyspark.sql import functions as F
col_to_combine = ['Date','code']
output = input_df.withColumn('combined',F.to_json(F.struct(*col_to_combine)))\
.drop(*col_to_combine)
output.show(truncate=False)
+---+--------------------------------+
|ID |combined |
+---+--------------------------------+
|1 |{"Date":"2021-12-01","code":"a"}|
|2 |{"Date":"2021-12-01","code":"b"}|
+---+--------------------------------+