java.lang.OutOfMemoryError: превышен предел издержек GC в PYSPARK - PullRequest
0 голосов
/ 30 апреля 2018

Мой сценарий искровой работы заключается в подключении к базе данных 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

...