Spark 2.1 - постоянный пул для класса SpecificUnsafeProjection превысил предел JVM в 64 КБ - PullRequest
0 голосов
/ 04 декабря 2018

Прошу прощения за мое невежество, так как я новичок в pyspark и Spark.Я работаю над обновлением Spark с 1.6.3 до 2.1 и сталкиваюсь с проблемами при запуске нашей модели с использованием pyspark.

Все, что мы делаем при запуске скрипта python, который выдает ошибку, мы читаем в JSON ипреобразовать его в DF, используя что-то вроде ниже

df_read = sparkSession.read.json('path to json file')

. После прочтения этого чтения мы выполняем некоторые операции над DF, запускаем некоторые UDF для столбцов и затем, в конечном счете, хотим записать обратно в JSON, который затем будетподобраны и записаны в таблицы Apache Phoenix.

Мы получаем следующее исключение при попытке выполнить любое терминальное действие на DF, например show() или take() или любое подобное.

Я прочитал (https://issues.apache.org/jira/browse/SPARK-18016?focusedCommentId=16348980&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16348980) здесь, что проблема в том, что спарк не может работать с суперширокими столбцами, и эта проблема исправлена ​​в версии 2.3.

У нас в DF около 450 столбцов, которые мыхотят написать.

Мой вопрос так как мы не можем перейти на Spark 2.3 в настоящее время, есть ли способ обойти эту штуку?p столбцы в 2 DF, а затем объединить их и написать или что-то в этом роде?

18/12/03 12:34:30 WARN TaskSetManager: Lost task 0.0 in stage 1.0 (TID 1, xhadoopm686p.aetna.com, executor 1): java.util.concurrent.ExecutionException: java.lang.Exception: failed to compile: org.codehaus.janino.JaninoRuntimeException: Constant pool for class org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection has grown past JVM limit of 0xFFFF

После вышеприведенного исключения он печатает некоторый сгенерированный код, и задание не выполняется.

Любая информацияочень ценится.

1 Ответ

0 голосов
/ 14 декабря 2018

Мне удалось обойти эту проблему, удалив все вложенные структуры в коде.Мы создавали несколько массивов для промежуточных вычислений, которые и вызывали эту проблему.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...