给定一个表示具有两个整数列(A,B)的表的变量t
中的Spark DataFrame,使用DataFrame列编写表达式,作为DataFrame的where()
方法的参数传递A大于5或B大于5的行。使用DataFrame变量而不是col()
函数使用。
答案 0 :(得分:0)
有两个col
个功能:一个来自Dataset class,另一个来自org.apache.spark.sql.functions。在这个简单的例子中,两者都有效:
t.where(t.col("A").gt(5).or(t.col("B").gt(5))).show() //from dataset
import org.apache.spark.sql.functions._
t.where(col("A").gt(5).or(col("B").gt(5))).show() //from functions
根据您要避免的两个中的哪一个,您可以选择另一个。
如果您使用Scala,$
也可以使用:
t.where($"A">5 or $"B">5).show
您也可以完全切换到sql语法:
t.where("A > 5 or B > 5").show
如果允许filter
,lamdba版本也可以使用:
t.filter(r => r.getInt(0) > 5 || r.getInt(1) > 5).show