разъем spark datasax cassandra медленно читает из тяжелой таблицы cassandra

Я новичок в Spark/Spark Cassandra Connector. Мы впервые пробуем искру в нашей команде, и мы используем коннектор искры cassandra для подключения к базе данных cassandra.

Я написал запрос, который использует тяжелую таблицу базы данных, и я увидел, что Spark Task не запускается до тех пор, пока запрос к таблице не извлечет все записи.

Только получение всех записей из базы данных занимает более 3 часов.

Для получения данных из БД мы используем.

  CassandraJavaUtil.javaFunctions(sparkContextManager.getJavaSparkContext(SOURCE).sc())
    .cassandraTable(keyspaceName, tableName);

Есть ли способ заставить искру начать работать, даже если все данные не были загружены?

Есть ли возможность указать spark-cassandra-connector использовать больше потоков для выборки?

спасибо, коко.




Ответы (1)


Если вы посмотрите на пользовательский интерфейс Spark, сколько разделов создается при сканировании вашей таблицы? Я только что сделал что-то подобное и обнаружил, что Spark создает слишком много разделов для сканирования, и в результате это занимает гораздо больше времени. Способ, которым я сократил время своей работы, состоял в том, что я установил для параметра конфигурации spark.cassandra.input.split.size_in_mb значение выше значения по умолчанию. В моем случае это заняло от 20 минут до четырех минут. Есть также еще несколько переменных Spark для чтения Cassandra, которые вы можете установить, найденные здесь. Эти вопросы о stackoverflow — это то, на что я ссылался изначально, надеюсь, они вам тоже помогут.

Итерировать большую таблицу Cassandra небольшими порциями < /а>

Установить количество задач при сканировании таблицы Cassandra

ИЗМЕНИТЬ:

Проведя некоторое тестирование производительности в отношении некоторых параметров конфигурации Spark, я обнаружил, что Spark создает слишком много разделов таблицы, когда я не предоставлял исполнителям Spark достаточно памяти. В моем случае увеличения объема памяти на гигабайт было достаточно, чтобы сделать параметр размера разделения ввода ненужным. Если вы не можете предоставить исполнителям больше памяти, вам все равно может понадобиться установить spark.cassandra.input.split.size_in_mbhigher в качестве обходного пути.

person Enigmatic Cipher    schedule 05.08.2015