卡桑德拉火花连接器joinWithCassandraTable字段与不同的名称



我希望在RDD和cassandra表上进行连接,这些表对于相同的键没有相同的名称例(简体):

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之后的所有值

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

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

将用户表中的"id"列映射到Home case类中的"user_id"字段。

你可以尝试在读取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 ...")

最新更新