3

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

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

Для получения всех записей из базы данных требуется больше 3 часов.

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

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

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

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

спасибо, kokou.

ответ

3

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

Iterate large Cassandra table in small chunks

Set number of tasks on Cassandra table scan

EDIT:

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