Давайте предположим, что у меня есть RDD
с элементами типа
case class Foo(name: String, nums: Seq[Int])
и таблицей my_schema.foo
в Cassandra
с ключом разделения, состоящим из name
и num
столбцов
Теперь я хотел бы получить для каждого элемента во входной СДР все соответствующие строки, например что-то вроде:
SELECT * from my_schema.foo where name = :name and num IN :nums
Я пробовал следующие подходы:
используйте расширение joinWithCassandraTable
: rdd.joinWithCassandraTable("my_schema", "foo").on(SomeColumns("name"))
, но я не знаю, как я могу указать ограничение IN
Для каждого элемента вводаСДР выдает отдельный запрос (в пределах функции map
).Это не работает, так как контекст искры не сериализуем и не может быть передан в map
- Плоское отображение входного СДР для генерации отдельного элемента
(name, num)
для каждого num
в nums
.Это сработает, но, вероятно, будет менее эффективным, чем использование предложения IN
.
Каков будет правильный способ решения этой проблемы?