Python 在pyspark中连接两个嵌套列
我有一个spark数据框,包含两列“a”和“b” 例如,一项数据输入为: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,但它对于大数据来说是一个低效的解决方案,并且充当了优
{"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解决方案满意吗?