параллельное соединение силы искры-sql - PullRequest
0 голосов
/ 18 ноября 2018

Я использую Spark-Sql для запроса таблиц Кассандры. В Cassandra я разделил свои данные с временным интервалом и одним идентификатором, поэтому на основе запросов мне нужно объединить несколько разделов с помощью spark-sql и выполнить агрегирование / группирование по результату объединения, что-то вроде этого:

for(all cassandra partitions){
DataSet<Row> currentPartition = sqlContext.sql(....);
unionResult = unionResult.union(currentPartition);
}

Увеличение ввода (количество загруженных разделов) увеличивает время отклика более, чем линейно, потому что объединения будут выполняться последовательно.

Поскольку нет ничего плохого в том, чтобы делать союзы параллельно, и я не знаю, как заставить спарк делать их параллельно, сейчас я использую ThreadPool асинхронно загрузить все разделы в моем приложении (что может вызвать OOM), и каким-то образом выполнить сортировку или простую группу в java (что заставляет меня задуматься, почему даже я вообще использую spark?)

Короткий вопрос: Как заставить spark-sql параллельно загружать разделы cassandra при их объединении? Кроме того, я не хочу, чтобы в искре было слишком много задач. С помощью решения Home-Made Async я использую coalesece (1), поэтому одна задача выполняется очень быстро (только время ожидания на casandra).

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