【问题标题】:Spark cassandra connector - access the RDD in where condidtionSpark cassandra 连接器 - 在 where 条件下访问 RDD
【发布时间】:2018-11-20 12:19:08
【问题描述】:

假设我有一个 RDD[Foo] 其中case class Foo(bar: String, baz: Int) 并且我在 Cassandra 中有一个表,分区键 bar 和集群键 baz

现在,我正在尝试将 RDD 与该表连接起来,并对集群键进行一些过滤:

rdd.joinWithCassandraTable("my_keyspace", "foo_table").where("baz < ???")

我应该用什么代替??? 来访问RDDbaz 属性?

我想达到与以下伪sql相同的结果:

select * from my_keyspace.foo_table ct
join rdd
on ct.bar = rdd.bar
where ct.baz < rdd.baz

【问题讨论】:

  • @RameshMaharjan 您链接的问题是关于分区键的。这是关于集群键上的动态过滤器值。

标签: scala apache-spark cassandra


【解决方案1】:

where 用于嵌入在 Cassandra 查询中的静态谓词。不能用于基于RDD的过滤。

为此,您必须使用标准 filter(因此将选择移至 Spark 端)。

【讨论】:

  • 您可以添加任何示例以使您的答案更好吗?
  • 使用 filter() 很容易,尽管它似乎对性能有潜在影响——我会读取整个分区。我的场景是否可以使用例如来实现? Spark SQL 而不是 cassandra 连接器?
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 2023-03-06
  • 2016-08-11
  • 2017-04-04
相关资源
最近更新 更多