Spark spark.sql.autoBroadcastJoinThreshold создает RuntimeException для HashedRelation, размер которого превышает 8G - PullRequest
0 голосов
/ 05 января 2019

У меня есть искровое задание, которое иногда завершается с ошибкой RuntimeException

java.lang.RuntimeException: Невозможно построить HashedRelation, который больше, чем 8G

Быстрый поиск в Google увеличивает исходный код

   if (neededNumWords > (1 << 30)) {
    throw new UnsupportedOperationException(
      "Can not build a HashedRelation that is larger than 8G")
  }

Так что это кажется жестким ограничением, а не настройкой, также возникает некоторая ошибка, что HashedRelations используются для соединений Broadcast, и это та самая задача, с которой я не справляюсь.

В настоящее время у меня та же самая работа, работающая со многими / намного / большими наборами данных, поэтому я немного смущен тем, почему это может быть проблемой, и я не вижу много полезного чтения. Я также нашел эту настройку:

spark.sql.autoBroadcastJoinThreshold, который в настоящее время установлен на 4294967296 (4 ГБ). В сообщении об ошибке 4 ГБ меньше, чем 8 ГБ, поэтому я не уверен, почему это создает проблему, но я могу отключить широковещательное соединение, установив для этого значение -1. Когда я это делаю, моя работа заканчивается.

Я был бы рад просто принять это решение, но я действительно смущен тем, почему у меня возникает эта проблема, в частности, почему размер моего автоматического вещания может быть меньше 8 ГБ, и у меня все еще есть сбой, и почему мой НАМНОГО больший набор данных успешно выполняется в том же соединении. Распределено ли значение HashedRelation? Если я разделю свой набор данных значительно больше, это решит эту проблему?

Любая идея здесь будет принята с благодарностью.

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