Параллелизм в Кассандре читается с использованием Scala - PullRequest
3 голосов
/ 17 июня 2019

Я пытаюсь вызвать параллельное чтение из таблицы Кассандры с помощью spark. Но я не могу вызвать параллелизм, так как только одно чтение происходит в любой момент времени. Какой подход следует использовать для достижения того же?

1 Ответ

3 голосов
/ 18 июня 2019

Я бы порекомендовал вам использовать следующий подход источник Блог Рассела Спитцера

Разделение разделов вручную с помощью объединения частичных сканирований: Передача задачи конечному пользователю также является возможностью (и текущим обходным путем). Большинство конечных пользователей уже понимают, почему у них длинные разделы, и в целом знают домен, в который попадают значения столбцов. Это позволяет им вручнуюразделите запрос так, чтобы он разбивал большие разделы.

Например, предполагая, что пользователь знает, что столбец кластеризации c охватывает интервалы от 1 до 1000000. Они могли бы написать код, подобный

val minRange = 0
val maxRange = 1000000
val numSplits = 10
val subSize = (maxRange - minRange) / numSplits

sc.union(
  (minRange to maxRange by subSize)
    .map(start => 
      sc.cassandraTable("ks", "tab")
        .where("c > $start and c < ${start + subSize}"))
)

Каждый СДРбудет содержать уникальный набор задач, рисующий только части полных разделов.Операция объединения объединяет все эти разрозненные задачи в один СДР.Максимальное количество строк, которое любой отдельный раздел Spark будет извлекать из одного раздела Cassandra, будет ограничено maxRange / numSplits.Этот подход, хотя и требует вмешательства пользователя, сохранит локальность и все же сведет к минимуму скачки между секторами диска.

Также параметры чтения-настройки

Read tuning parameters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...