Cassandra火花连接器joinWithCassandraTable在具有不同名称的字段上

时间:2015-08-25 16:33:28

标签: scala cassandra apache-spark datastax-enterprise spark-cassandra-connector

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

2 个答案:

答案 0 :(得分:12)

您可以使用“as”语法,就像在select中更改已连接列的映射一样。

一个例子

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

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

答案 1 :(得分:1)

您可以尝试在Cassandra表中读取时更改列名,以便它与您要加入的RDD字段匹配:

例如:

if user_signed_in?