Я использую кластер искр с двумя узлами, каждый из которых имеет двух исполнителей (каждый использует 2 ядра и 6 ГБ памяти).
Это хорошая конфигурация кластера для более быстрого выполнения моих заданий на спарк?
Я новичок в работе и выполняю задание на 80 миллионах строк данных, которое включает в себя перетасовку тяжелых задач, таких как агрегирование (подсчет) и операции объединения (самосоединение на фрейме данных).
Узкие:
- Показано Недостаточно ресурсов для моих исполнителей при чтении данных.
- В меньшем наборе данных это занимает много времени.
Каким должен быть мой подход и как я могу устранить свои узкие места?
Любое предложение было бы весьма заметно.
query = "(выберите x, y, z из таблицы) как df"
jdbcDF = spark.read.format("jdbc").option("url", mysqlUrl) \
.option("dbtable", query) \
.option("user", mysqldetails[2]) \
.option("password", mysqldetails[3]) \
.option("numPartitions", "1000")\
.load()
Это дает мне фрейм данных, который в jdbcDF.rdd.getNumPartitions () дает мне значение 1. Я что-то здесь упускаю? Я думаю, что я не распараллеливаю свой набор данных.