我有一个 json 列,它可以包含任意键:值对。我想为这些键:值对创建新的顶级列。 例如,如果我有这些数据
A B
"{\"C\":\"c\" , \"D\":\"d\"...}" b
这就是我想要的输出
B C D ...
b c d
很少有类似于将列拆分为多列的问题,但在这种情况下没有一个起作用。任何人都可以帮忙吗?提前致谢!
最佳答案
您正在寻找org.apache.spark.sql.functions.from_json
:https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions $@from_json(e:org.apache.spark.sql.Column,schema:String,options:java.util.Map[String,String]):org.apache.spark.sql.Column
这是与 SPARK-17699 相关的 python 代码提交: https://github.com/apache/spark/commit/fe33121a53384811a8e094ab6c05dc85b7c7ca87
提交的示例用法:
>>> from pyspark.sql.types import *
>>> data = [(1, '''{"a": 1}''')]
>>> schema = StructType([StructField("a", IntegerType())])
>>> df = spark.createDataFrame(data, ("key", "value"))
>>> df.select(from_json(df.value, schema).alias("json")).collect()
[Row(json=Row(a=1))]
关于apache-spark - Pyspark dataframe 将 json 列值拆分为顶级多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42916755/