tableB.myOtherValue")-6ren"> tableB.myOtherValue")-有没有办法加入 2 个表,在 2 个表之间的列上添加条件? 例子 : case class TableA(pkA: Int, valueA: Int) case class TableB(pkB: I-6ren">
gpt4 book ai didi

apache-spark - Spark Cassandra : join table with condition on the query based on attribute from the primary RDD ("where tableA.myValue > tableB.myOtherValue")

转载 作者:行者123 更新时间:2023-12-04 04:11:33 25 4
gpt4 key购买 nike

有没有办法加入 2 个表,在 2 个表之间的列上添加条件?

例子 :

case class TableA(pkA: Int, valueA: Int)
case class TableB(pkB: Int, valueB: Int)


val rddA = sc.cassandraTable[TableA]("ks", "tableA")
rddA.joinWithCassandraTable[TableB]("ks", "tableB").where("tableB.valueB > tableA.valueA")

有没有办法发送 where("tableB.valueB > tableA.valueA")操作说明 ? (“tableB.value”是一个聚类列)

最佳答案

RDD.where() 调用只是将谓词传递给 CQL。 CQL 仅限于快速简单的 OLTP 查询。
更复杂的查询只能使用 SparkSQL 来完成。对于您的情况,它可能是这样的:

sqlContext.read.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "tableA", "keyspace"->"ks"))
.load().registerTempTable("tableA")
sqlContext.read.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "tableB", "keyspace"->"ks"))
.load().registerTempTable("tableB")
sqlContext.sql("select * from tableA join tableB on tableB.valueB > tableA.valueA").show

关于apache-spark - Spark Cassandra : join table with condition on the query based on attribute from the primary RDD ("where tableA.myValue > tableB.myOtherValue"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718120/

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