Estou usando o Spark (1.5.1) de um notebook IPython em um macbook pro. Após a instalação de ignição e Anaconda, eu começo IPython de um terminal executando: IPYTHON_OPTS="notebook" pyspark
. Isso abre uma página da Web listando todos os meus notebooks IPython. Eu posso selecionar um deles, abrindo-o em uma segunda página da web. O SparkContext (sc) já está disponível, e meu primeiro comando no notebook é o help(sc)
que funciona bem. O problema que estou tendo é que estou recebendo um erro de espaço de heap Java que não sei como resolver. Como visualizo minha configuração de heap Java atual e como a aumento no contexto da minha instalação. A mensagem de erro que estou recebendo é a seguinte:
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 19 in stage 247.0 failed 1 times, most recent failure: Lost task 19.0 in stage 247.0 (TID 953, localhost): java.lang.OutOfMemoryError: Java heap space
Respostas:
Você pode gerenciar os limites de memória Spark programaticamente (pela API).
Como o SparkContext já está disponível no seu Notebook:
Você também pode definir, mas primeiro encerre o SparkContext existente:
Se sua carga de trabalho for a mesma para todas as análises, a edição do spark-defaults.conf, conforme citado acima, é o caminho a percorrer.
fonte
Eu o resolvi criando um
spark-defaults.conf
arquivoapache-spark/1.5.1/libexec/conf/
e adicionando a seguinte linha:spark.driver.memory 14g
Isso resolveu meu problema. Mas então eu encontrei outra questão de
exceeding max result size of 1024MB
. A solução foi adicionar outra linha no arquivo acima:spark.driver.maxResultSize 2g
fonte
Basta usar a
config
opção ao configurar o SparkSession (a partir do 2.4)fonte