Разъем Spark Cassandra - использование IN для фильтрации динамических данных - PullRequest
0 голосов
/ 08 июня 2018

Давайте предположим, что у меня есть 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

Я пробовал следующие подходы:

  1. используйте расширение joinWithCassandraTable: rdd.joinWithCassandraTable("my_schema", "foo").on(SomeColumns("name")), но я не знаю, как я могу указать ограничение IN

  2. Для каждого элемента вводаСДР выдает отдельный запрос (в пределах функции map).Это не работает, так как контекст искры не сериализуем и не может быть передан в map

  3. Плоское отображение входного СДР для генерации отдельного элемента (name, num) для каждого num в nums.Это сработает, но, вероятно, будет менее эффективным, чем использование предложения IN.

Каков будет правильный способ решения этой проблемы?

...