Я изучаю Apache Spark, Cassandra 3.7 и Java-разъем Datastax для Cassandra.Как использовать Java-коннектор для Cassandra для получения данных из зависимых семейств столбцов
Это может быть совершенно глупый и наивный вопрос для вас, но я не получаю правильный способ справиться с этим из документации
У меня есть 2 таблицы
Cassandra Колонка Семья: Времена года
+------------------------+
| Id | Season | isActive |
+------------------------+
| 001 | Summer | 0 |
| 002 | Fall | 0 |
| 003 | Spring | 1 |
+------------------------+
Cassandra Column Семья: Фрукты
+---------------------------+
| Season | Fruit Name | Id |
+---------------------------+
| Summer | Fruit1 | 001 |
| Fall | Fruit2 | 002 |
| Spring | Fruit3 | 003 |
| Spring | Fruit4 | 004 |
| Summer | Fruit5 | 005 |
+---------------------------+
Предположим, что это семейство колонок Fruits огромно, поэтому я не хочу загружать все данные в Spark.
Во-первых, я хочу получить активные сезоны, в приведенном выше примере это «Весна», а затем получить плоды этого Активного сезона из таблицы Фруктов, я не могу это сделать, используя Java-коннектор Datastax для 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>
Любая помощь будет оценена.
Заранее спасибо
Здравствуйте, @gsteiner, моя модель данных такая же, как вы говорите, только мое представление изменено в вопросе. Я исправлю это. Но даже после того, как я сделал это изменение, я хочу начать активный сезон с сезона Seasons CF, а затем получить Фрукты этого активного сезона. Как это сделать программно? - Спасибо – Shashi
Здравствуйте @gsteiner, я не могу построить динамичный способ получения фруктов на основе активного сезона. Я хочу сделать это, как MySQL, создать динамический запрос заранее, а затем просто привязать требуемый ввод позже в запросе, когда это необходимо. Но не используя запросы, я хочу использовать Spark-Cassandra-connector-for-Java. Итак, как связать активный сезон с запросом на Fruits CF, чтобы получить плоды этого активного сезона, а не загружать полный Fruits CF, а затем фильтровать. Какой Java API поддерживает это? Есть идеи? – Shashi
Вы можете сделать это с помощью драйвера Java Cassandra, предварительно запросив таблицу Seasons в течение активного сезона, а затем запросив таблицу фруктов, где сезон = сезон, который вы получили в первом запросе. Я не уверен, как достичь этого с помощью разъема Spark, но я уверен, что есть способ. Я еще немного не знаком с этим. Прошу прощения, я не ответил на ваш вопрос. – gsteiner