gpt4 book ai didi

apache-spark - Spark SQL 和 Cassandra JOIN

转载 作者:行者123 更新时间:2023-12-03 21:02:42 28 4
gpt4 key购买 nike

我的 Cassandra 架构包含一个表,其中包含一个分区键(时间戳)和一个 parameter 列(集群键)。

每个分区包含 10k+ 行。这是以每秒 1 个分区的速率记录数据。

另一方面,用户可以定义“数据集”,我有另一个表,其中包含作为分区键的“数据集名称”和一个集群列,它是引用另一个表的时间戳(因此是“数据集”是分区键的列表)。

当然,我想做的事情看起来像是 Cassandra 的反模式,因为我想加入两个表。

但是使用 Spark SQL 我可以运行这样的查询并执行 JOIN

SELECT * from datasets JOIN data 
WHERE data.timestamp = datasets.timestamp AND datasets.name = 'my_dataset'

现在的问题是:Spark SQL 是否足够智能,可以只读取与 datasets 中定义的 timestamp 相对应的 data 分区?

最佳答案

编辑:修复关于连接优化的答案

is Spark SQL smart enough to read only the partitions of data which correspond to the timestamps defined in datasets?

没有。事实上,由于您为数据集表提供了分区键,因此 Spark/Cassandra 连接器将执行谓词下推,并使用 CQL 直接在 Cassandra 中执行分区限制。但是,除非您将 RDD API 与 joinWithCassandraTable()

一起使用,否则连接操作本身不会有谓词下推

请参阅此处了解所有可能的谓词下推情况:https://github.com/datastax/spark-cassandra-connector/blob/master/spark-cassandra-connector/src/main/scala/org/apache/spark/sql/cassandra/BasicCassandraPredicatePushDown.scala

关于apache-spark - Spark SQL 和 Cassandra JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35392521/

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