gpt4 book ai didi

python - PySpark 上 Spark-cassandra 的服务器端过滤

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:04 24 4
gpt4 key购买 nike

我是Spark新手,想了解更多与Cassandra合作时的操作情况。

大多数教程都提醒我进行服务器端过滤,我完全理解这样做的重要性。

然而,这些教程要么基于 Scala,要么基于 pyspark_cassandra,并且没有一个使用 PySpark。

只是好奇以下脚本是否正在执行服务器端过滤。

给定一个 SparkConf 对象 conf:

sc = pyspark.SparkContext(conf=conf)

sqlContext = SQLContext(sc)
df = (sqlContext.read.format("org.apache.spark.sql.cassandra")
.options(keyspace="ks", table="tbl").load())

df.filter("id = 1234").show()

此外,在这种情况下,我是否将整个表加载到我的 Spark 集群中进行过滤?

最佳答案

Cassandra 连接器支持 Spark DataFrames 上的谓词下推,因此只要启用下推,您就可以安全地假设基本过滤器在 Cassandra 端执行。它可能不适用于复杂的谓词。如果您有疑问,最好检查 BasicCassandraPredicatePushDown docstrings

您还可以检查执行计划(解释)。如果预测是下推的,则应在 PushedFilters 部分中列出,例如:

df = (sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(table="words", keyspace="test")
.load())

df.select("word").where(col("word") == "bar").explain()
## == Physical Plan ==
## Scan org.apache.spark.sql.cassandra.CassandraSourceRelation@62738171[word#0]
## ... PushedFilters: [EqualTo(word,bar)]

在 Spark 1.6 中,PushedFilters 的解释有点误导。它将列出数据源已显示的所有过滤器,但实际上不会告诉您数据源使用了哪些过滤器。在这种情况下,最好只查看解释计划是否有针对谓词的单独过滤步骤。如果是,则连接器没有下推谓词。如果没有,则谓词被推送。

另一个选项是打开 Spark Cassandra 连接器的 INFO/DEBUG 日志记录,以准确查看连接器在 Catalyst 中执行的操作

关于python - PySpark 上 Spark-cassandra 的服务器端过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com