PySpark фильтрует фрейм данных и записывает фрейм данных в базу данных mysql

#dataframe #apache-spark #pyspark #apache-spark-sql #export

Вопрос:

Я пытаюсь записать фрейм данных в базу данных MySQL и использую Apache Spark 2.3.1. Он содержит от 20 до 30 тысяч строк, считываемых из MySQL и разделенных на 20 разделов. Я сначала фильтрую фрейм данных и пытаюсь записать отфильтрованный результирующий набор в базу данных mysql.

Но операция записи становится слишком медленной. Без фильтрации операция записи df выполняется с ожидаемой скоростью и производительностью. Кто-нибудь может помочь ?

Мой Код:

 dataFrame = spark.read.format('jdbc').option(...).load()
//performing some operations and adding new column "total" in data frame

filteredDF = dataFrame.filter(dataFrame.total >= 5000)
//no_of_partitions is 20

filteredDF.write.format('jdbc').options().save()
 

Спасибо!

Ответ №1:

Можете ли вы кэшировать свой фрейм данных перед операцией фильтрации ? И проверьте, выполняется ли ваш код в соответствии с ожидаемым временем.

Комментарии:

1. Я даже пытался это сделать, но, похоже, проблема с параллелизмом. В настоящее время задание обрабатывается на одном ядре. Так что, возможно, из-за этого и использование трансляции было неправильно обработано, что я затем исправил и решил проблему.