3

我正在寻找一个RDD和一个cassandra表的连接,它们对于同一个键ex(简化)具有不同的名称:

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 之后加入所有值。

4

2 回答 2

12

您可以像在选择中一样使用“as”语法来更改连接列的映射。

一个例子

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

将用户表中的“id”列映射到Home案例类中的“user_id”字段。

于 2015-08-25T17:36:04.603 回答
1

您可以在读取 Cassandra 表时尝试更改列名,使其与您要加入的 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 ...")
于 2015-08-25T17:05:19.147 回答