Cassandra spark 连接器在具有不同名称的字段上加入 WithCassandraTable

Cassandra spark connector joinWithCassandraTable on field with differents name

我正在寻找一个 RDD 和一个 cassandra table 的连接,它们对于相同的键具有不同的名称 例如(简体):

case class User(id : String, name : String)

case class Home( address : String, user_id : String)

如果想做:

rdd[Home].joinWithCassandraTable("testspark","user").on(SomeColumns("id"))

如何精确确定要进行联接的字段的名称。 而且我不想将 rdd 映射为只有正确的 id,因为我想在 joinWithCassandraTable 之后加入所有值。

您可以尝试在读入 Cassandra 时更改列名称 table 以便它与您要加入的 RDD 字段相匹配:

例如:

import org.apache.spark.sql.cassandra.CassandraSQLContext
val sc: SparkContext = ...
val cc = new CassandraSQLContext(sc)
val rdd: SchemaRDD = cc.sql("SELECT user_id AS id, <other columns> from testspark.user WHERE ...")

您可以像在 select 中一样使用 "as" 语法来更改连接列的映射。

一个例子

sc.cassandraTable[Home]("ks","home").joinWithCassandraTable("ks","user").on(SomeColumns("id" as "user_id")).collect

将用户 table 的 "id" 列映射到 Home 案例 class 的 "user_id" 字段。