Python 在pyspark中连接两个嵌套列

Python 在pyspark中连接两个嵌套列,python,pyspark,apache-spark-sql,pyspark-dataframes,Python,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个spark数据框,包含两列“a”和“b” 例如,一项数据输入为: {"firstname" : {"s":"john"}, "secondname":{"s":"cena"} } 我想通过连接名称来添加一列,因此条目为: {"firstname" : {"s":"john"}, "secondname":{"s":"cena"}, "fullname" : {"s" : "john cena"} } 我曾经使用过UDF,但它对于大数据来说是一个低效的解决方案,并且充当了优

我有一个spark数据框,包含两列“a”和“b”

例如,一项数据输入为:

{"firstname" : {"s":"john"}, 
"secondname":{"s":"cena"} } 
我想通过连接名称来添加一列,因此条目为:

{"firstname" : {"s":"john"}, 
"secondname":{"s":"cena"}, 
"fullname" :
{"s" : "john cena"} 
} 
我曾经使用过UDF,但它对于大数据来说是一个低效的解决方案,并且充当了优化的黑盒。
是否有任何方法可以使用PySpark函数或SQL查询来实现结果

查找内联代码注释以获得答案解释

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._

object SampleJsonData {

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder.master("local[*]").getOrCreate;


    //Load your JSON
    val df = spark.read.json("src/main/resources/sampleJsonData.json")

    //Add a new Column with name "fullname"
    df.withColumn("fullname",
      //Select nested "firstname.s" and "secondname.s" and assign it to "fullname.s"
      struct(concat(col("firstname.s"),lit(" "),col("secondname.s")).as("s")))
      //Write your JSON output
      .write.json("src/main/resources/sampleJsonDataOutput.json")


  }

}


您对Scala解决方案满意吗?