如何在Spark中对数据框的列执行二进制“或”操作

时间:2017-06-07 12:21:51

标签: scala apache-spark apache-spark-sql

让我向您解释一下情景:

我正在创建一个掩码值。即。

val Date = 20170501
val day = Date.toString.substring(6, 8)
val mask = pow(2, day.toInt -1)

接下来我创建dataframe,使用withColumn创建附加列,即

val t1 = df.withColumn("C1", when($"a1" > 0 , $"C1" | mask.toInt).otherwise($"C1"))

但是当我使用|列执行Dataframe操作时,它会将错误视为“value | is not a member of org.apache.spark.sql.ColumnName”。

早期的帮助将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Column实施的bitwiseOR

val t1 = df.withColumn("C1", when($"a1" > 0 , $"C1".bitwiseOR(mask.toInt)).otherwise($"C1"))