我有一个具有两个数组列的数据框。我正在尝试通过将每个值 sep by 合并来将这两列合并为一列。例如,在下面的示例中,主题和标记应该合并并形成一个字符串类型的列,其值类似于 [eng:40,math:20]。有人可以在这里指点一下吗
import spark.implicits._
val columns=Array("id", "subject","mark")
val df1=sc.parallelize(Seq(
(1, Array("eng","math"),Array("10","20"))
)).toDF(columns: _*)
df1.printSchema
df1.show()
id,newcol
1,[eng:40,math:20]
检查下面的代码。
df1.selectExpr(
"id",
"""
TRANSFORM(
ARRAYS_ZIP(subject, mark),
e -> CONCAT( e.subject, ':', e.mark )
) as newcol
"""
)
.show(false)
+---+-----------------+
|id |newcol |
+---+-----------------+
|1 |[eng:10, math:20]|
+---+-----------------+