Как перераспределить CassandraRDD в Apache Spark

Я использую кластер Three Node Cassandra с шестью Spark Workers, каждый из которых имеет 1 ядро и 2 ГБ ОЗУ. Используя приложение Spark, я пытаюсь получить все данные из таблицы Cassandra, которая содержит более 300 тыс. строк, и пытаюсь выполнить некоторую агрегацию.

Но получение данных из Cassandra занимает много времени. Я также просмотрел пользовательский интерфейс Spark и увидел, что стадия Spark имеет 3 раздела, из которых два выполняются очень быстро (в течение секунд), а третий занимает много времени (7 минут).

И я также попытался переразбить CassandraRDD, чтобы увеличить количество задач и распределить задачи между всеми шестью рабочими, но не нашел никакого решения.


person Kaushal    schedule 03.04.2015    source источник


Ответы (1)


Чтобы настроить количество задач, созданных CassandraRDD, вам необходимо настроить spark.cassandra.input.split.size. Это определяет, сколько фактических разделов Spark будет создано.

spark.cassandra.input.split.size    approx number of Cassandra partitions in a Spark partition  100000

Обратите внимание, что это определяет количество разделов C*, а не строк C* в искровом разделе. Это также оценка, поэтому вы не можете гарантировать, что точное количество токенов будет в искровом разделе.

Если вы продолжаете видеть, что некоторые разделы работают медленнее, чем другие, я бы проверил работоспособность узла для этого раздела и проверил наличие горячих точек.

person RussS    schedule 03.04.2015
comment
Я установил это --conf spark.cassandra.input.split.size_in_mb=32, но все мои данные размером около 250 МБ загружаются в один исполнитель (~ 4 миллиона записей) - person Nipun; 25.09.2015
comment
обратитесь к этому stackoverflow .com/questions/32775696/ - person Nipun; 25.09.2015