Я выполняю задание pyspark через spark-submit, в котором две большие паркетные таблицы сначала соединяются вместе перед применением некоторой дополнительной логики c. После отправки все задачи завершаются неудачно, и в журналах указывается следующее:
Caused by: org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: n*. To avoid this, increase spark.kryoserializer.buffer.max value
* n - это просто переменная, представляющая, сколько памяти требуется. Это значение зависит от того, насколько я установил spark.kryoserializer.buffer.max
в значение.
Я увеличил значение этого параметра до 2047 МБ и больше не вижу ошибку, и задание отображается как «Выполнено» в трекере заданий ApplicationMaster. но задание по-прежнему отображается как Запуск на консоли, а также в Yarn.
Контекст для запускаемого задания:
Для контекста, вот что я делаю. Я беру очень большой список URL-адресов и объединяю их в один и тот же точный список с критериями совпадения, что вторая строка URL-адреса содержится в первой строке URL-адреса. Например: www.google.com будет соответствовать www.google.com и www.google.com/1 и www.google.com/1/2 URL_Hierarachy = URL_1.join (URL_2, URL_1.url1 == URL_2.url2.substr (URL_1.numone, URL_1.nchar_url1), «влево» ) где numone и nchar_url1 используются для определения длины первого URL. Это даст гораздо больше записей, чем начальные 93 млн.