在pyspark中连接两个嵌套列

2024-09-22 14:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,一项数据输入为:

{"firstname" : {"s":"john"}, 
"secondname":{"s":"cena"} } 

我想通过连接名称来添加一列,因此条目为:

{"firstname" : {"s":"john"}, 
"secondname":{"s":"cena"}, 
"fullname" :
{"s" : "john cena"} 
} 

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


Tags: 数据方法函数名称黑盒条目firstname解决方案
1条回答
网友
1楼 · 发布于 2024-09-22 14:28:23

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

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")


  }

}

相关问题 更多 >