apache-spark - Spark - 选择哪里或过滤?

标签 apache-spark apache-spark-sql

Spark 中使用 where 子句进行选择和过滤有什么区别?
是否存在其中一种比另一种更合适的用例?

什么时候使用

DataFrame newdf = df.select(df.col("*")).where(df.col("somecol").leq(10))

什么时候

DataFrame newdf = df.select(df.col("*")).filter("somecol <= 10")

更合适吗?

最佳答案

根据spark documentationwhere()filter() 的别名”

过滤器(条件) 使用给定条件过滤行。 where()filter() 的别名。

参数:条件 - types.BooleanTypeColumn 或 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/

相关文章:

java - Spark SQL : using collect_set over array values?

r - spark SQL : sqlContext. sql 的 SparklyR 包装器

python - 为什么我的 Spark DataFrame 比 RDD 慢很多?

hadoop - 使用SPARK数据框的方法 “saveAsTable”时权限被拒绝

scala - 从 Spark 调用休息服务

scala - spark-hadoop参数

sql - 如何在 Azure databricks SQL 中将字段值转换为逗号分隔

scala - 远程 Spark 连接 - Scala : Could not find BlockManagerMaster

java - 清除检查点位置后 Spark 结构化流消耗的旧 Kafka 偏移量

apache-spark - 在集群 : Initial job has not accepted any resources 上运行 Spark