在SPARK 1.4.0版本中。您可以使用WHERE/OUCK语法:
// Create the dataframe
val df = Seq(“Red”, “Green”, “Blue”).map(Tuple1.apply).toDF(“color”)
// Use when/otherwise syntax
val df1 = df.withColumn(“Green_Ind”, when($“color” === “Green”, 1).otherwise(0))
如果您使用的是SMARK 1.3.0,则可以选择使用UDF:
// Define the UDF
val isGreen = udf((color: String) => {
if (color == “Green”) 1
else 0
})
val df2 = df.withColumn(“Green_Ind”, isGreen($“color”))
在Spark1.5.0中:您还可以使用SQL语法Exr函数
val df3 = df.withColumn(“Green_Ind”, expr(“case when color = ‘green’ then 1 else 0 end”))
或者
df.registerTempTable(“data”)
val df4 = sql(""" select *, case when color = ‘green’ then 1 else 0 end as Green_ind from data “”")