Мой сценарий искровой работы заключается в подключении к базе данных PostgreSQL, чтении данных из PSQL и выполнении агрегации после чтения данных. В этом процессе я могу успешно установить соединение с базой данных, и при выборе строк из таблицы, с которой я сталкиваюсь
ОШИБКА: java.lang.OutOfMemoryError пространство кучи Java
И
ОШИБКА: java.lang.OutOfMemoryError: Превышен лимит накладных расходов GC
Чтобы решить проблему с кучей, я добавил ниже config в файле spark-defaults.conf. Это отлично работает
spark.driver.memory 1g
Для решения проблемы превышения лимита GC я добавил ниже config
spark.executor.memory 1g
spark.executor.extraJavaOptions Xmx1024m
spark.dirver.maxResultSize 2g
Эти конфигурации не работали на 100%, но я столкнулся с той же проблемой. По которому я тоже получаю
ОШИБКА PSQL: org.postgresql.util.psqlexception не хватило памяти для получения результатов запроса
Я сталкиваюсь с этими проблемами, когда имею дело с таблицами, которые имеют огромное количество строк, то есть таблица news_mentions имеет 4 540 092 записей, а размер таблицы составляет 5 476 МБ. ТАК что выполнение искрового задания занимает еще больше времени, которое должно быть выполнено в течение нескольких секунд.
Вот мой действительный код.
from pyspark.sql import SparkSession
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import HiveContext
from pyspark.sql import DataFrameReader
sc = SparkContext()
sqlContext = SQLContext(sc)
sqlContext = HiveContext(sc)
input_media_source = " Times of India"
# Connecting to news_mentions table
df1 = sqlContext.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/testdb").option("dbtable", "news_mentions").option("user", "postgres").load()
df1.createOrReplaceTempView("news_mentions")
news_mentions_DF = sqlContext.sql("SELECT * FROM news_mentions")
news_mentions_DF.show()
Я столкнулся с ошибкой превышения лимита ГХ при выполнении show (). Как быстро и без ошибок запустить мою работу в pyspark?
ПРИМЕЧАНИЕ. Я запускаю задание pyspark с помощью команды spark-submit без запуска какого-либо автономного режима кластера.
Версия My spark - 2.2.0 с версией Python - 3.5.2