【发布时间】:2017-12-11 04:33:26
【问题描述】:
我有一个数组作为广播变量,它包含整数:
broadcast_array.value
Array(72159153, 72159163, 72159202, 72159203, 72159238, 72159398, 72159447, 72159448, 72159455, 72159492...
我在数据集中有一列(调用是 col_id,其中包含可能在 broadcast_array 中的 IntegerType 值,但它们可能不在。
我只是想创建一个新列(称为new_col)来检查每行的col_id 值是否在broadcast_array 中。如果是这样,新的列值应该是Available,否则它可以是null
所以我有类似的东西:
val my_new_df = df.withColumn("new_col", when(broadcast_array.value.contains($"col_id"), "Available"))
但我不断收到此错误:
Name: Unknown Error
Message: <console>:45: error: type mismatch;
found : Boolean
required: org.apache.spark.sql.Column
val my_new_df = df.withColumn("new_col", when(broadcast_array.value.contains($"col_id"), "Available"))
^
StackTrace:
最让我困惑的是,我认为when 语句需要一个输出一些布尔值的条件,但这里它说它需要一个列。
我应该如何根据现有列中的值是否可以在预定义的数组中找到来向新列添加值?
【问题讨论】:
标签: scala apache-spark merge apache-spark-sql