apache-spark - Pyspark dataframe 将 json 列值拆分为顶级多列

标签 apache-spark pyspark spark-streaming apache-spark-sql

我有一个 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/

相关文章:

dataframe - 有没有一种惯用的方法来缓存 Spark 数据帧?

java - 并行处理 DStream 中的 RDD

java - kafka 引发流式 java api 问题

apache-spark - Spark 2.4.0 functions.udf 不适用于集合

java - 使用 scala 将应用程序参数传递给 Spark-Submit 时出现问题

python - 在python中的kafka Direct Stream中手动提交偏移量

python - 将 UDF 余弦相似度应用于 Pyspark 中的分组 ML 向量时出现问题

apache-spark - DStream 在一个批处理间隔内生成多少个 RDD?

java - 集成 Spark SQL 和 Spark Streaming 时出现 Not Serializable 异常

scala - Spark : Executor Lost Failure (After adding groupBy job)