我希望在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 ...")