RDD JoinWithCassandraTable加入列

时间:2016-06-16 04:32:42

标签: apache-spark cassandra apache-spark-sql

RDD1.joinWithCassandraTable(“keyspace”,“Tableabc”,SomeColumns(“lines”),SomeColumns(“col1”,“col2”,“col3”))

以上是将RDD1与Cassandra中的表连接的语法。其中col1,col2,col3是用于与RDD1

连接的列

我有如下要求。 Tableabc有一个名为“lines”的列,其数据类型为“list”。 此行列有4列,如下所示。

line:{cola:22,colb:hello,colc:sri,cold:123}

基本上是一个json对象。

现在,如果您看到我的语法,我使用了SomeColumns(“lines”)。我可以将输出作为RDD获得,如下所示。

(RDD1columns,CassandraRow {lines:[{cola:22,colb:hello,colc:sri,cold:123}]})

但我需要的是我只想选择“可乐”,我不需要行中的所有列。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

JoinWithCassandraTable在数据库上调用直接连接,并且只能在加入分区键时使用。如果您想加入分区键的一部分,则需要进行全面扫描。

这意味着无法在任何集合列上执行JWCT。

如果lines具有键:值对,那么它是怎样的?

如果你只想要"可乐"来自线条的价值你可以做一张地图

RDD1.joinWithCassandraTable().map(_._2.get[Map[String, AnyRef]](lines).get("cola"))