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" 字段。
我正在寻找一个 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" 字段。