Spark 中使用 where 子句进行选择和过滤有什么区别?
是否存在其中一种比另一种更合适的用例?
什么时候使用
DataFrame newdf = df.select(df.col("*")).where(df.col("somecol").leq(10))
什么时候
DataFrame newdf = df.select(df.col("*")).filter("somecol <= 10")
更合适吗?
最佳答案
根据spark documentation “where()
是 filter()
的别名”
过滤器(条件)
使用给定条件过滤行。
where()
是 filter()
的别名。
参数:条件 - types.BooleanType
的Column
或 SQL 表达式字符串。
>>> df.filter(df.age > 3).collect()
[Row(age=5, name=u'Bob')]
>>> df.where(df.age == 2).collect()
[Row(age=2, name=u'Alice')]
>>> df.filter("age > 3").collect()
[Row(age=5, name=u'Bob')]
>>> df.where("age = 2").collect()
[Row(age=2, name=u'Alice')]
关于apache-spark - Spark - 选择哪里或过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867472/