我正在研究用于Cassandra的Apache Spark,Cassandra 3.7和Datastax的Java连接器。
这对你来说可能是完全愚蠢和天真的问题,但我没有从文档中处理它的正确方法
我有2张桌子
Cassandra Column Family:Seasons
+------------------------+
| Id | Season | isActive |
+------------------------+
| 001 | Summer | 0 |
| 002 | Fall | 0 |
| 003 | Spring | 1 |
+------------------------+
Cassandra Column Family:水果
+---------------------------+
| Season | Fruit Name | Id |
+---------------------------+
| Summer | Fruit1 | 001 |
| Fall | Fruit2 | 002 |
| Spring | Fruit3 | 003 |
| Spring | Fruit4 | 004 |
| Summer | Fruit5 | 005 |
+---------------------------+
假设这个Fruits列系列很大,所以我不想在Spark中加载所有数据。
首先,我想获得活跃的季节,在上面的例子中它是“Spring”,然后从Fruits表中获得Active Season的成果,我无法使用Datastax的Java连接器为Cassandra做到这一点。这可能很简单,但我想我错过了一些东西,我想从你那里得到另一个观点。
直到现在我做了以下
JavaRDD<SeasonsClass> seasons RDD = CassandraJavaUtil.javaFunctions(sc)
.cassandraTable(“myKeySpaceName”, "Seasons")
.map(SeasonsClass.getSeasonsRows())
.filter(SeasonsClass.filterActiveSeasons());
JavaRDD<FruitsClass> fruitsRDD = CassandraJavaUtil.javaFunctions(sc)
.cassandraTable("myKeySpaceName", "Fruits")
.map(FruitsClass.getFruits());
但这给了我所有的成果,而不是活跃季节的成果。我怎样才能获得活跃的季节水果。
我得到了活跃季节的清单,但是我怎样才能获得这个活跃季节的成果?
我正在使用
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector-java_2.10</artifactId>
<version>1.6.0-M1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.2</version>
</dependency>
任何帮助将不胜感激。
提前谢谢
答案 0 :(得分:0)
我认为这可能是一个数据建模问题。要按季节查询Fruits表,您需要将Season列指定为分区键,Fruit Name作为您的聚类列。我认为你不需要这个设置的ID字段,但这取决于你使用的是什么。