scala—如何将字符串列表或数组作为列添加到sparkDataframe

lsmepo6l  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(330)

所以,我有 n 我可以保留在数组或列表中的字符串数,如下所示:

val checks = Array("check1", "check2", "check3", "check4", "check5")
val checks: List[String] = List("check1", "check2", "check3", "check4", "check5")

现在,我有一个sparkDataframe df 我想添加一个列,其中的值存在于这个列表/数组中(可以保证我的列表/数组中的项目数与Dataframe中的行数完全相等,即 n )
我试着做: df.withColumn("Value", checks) 但那没用。实现这一目标的最佳方法是什么?

tpgth1q7

tpgth1q71#

需要将其添加为数组列,如下所示:

val df2 = df.withColumn("Value", array(checks.map(lit):_*))

如果希望每行有一个值,可以获取数组元素:

val df2 = df.withColumn("Value", array(checks.map(lit):_*))
            .withColumn("rn", row_number().over(Window.orderBy(lit(1))) - 1)
            .withColumn("Value", expr("Value[rn]"))
            .drop("rn")

相关问题