在pyspark中连接两个嵌套列
Concatenate two nested columns in pyspark
我有一个包含两列 "a" 和 "b" 的 spark Dataframe。
例如,一项数据是:
{"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")
}
}
我有一个包含两列 "a" 和 "b" 的 spark Dataframe。
例如,一项数据是:
{"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")
}
}