Корневая директория: / tmp / hive на HDFS должна быть доступна для записи. Ошибка приложения Spark. - PullRequest
0 голосов
/ 22 февраля 2019

Я создал приложение Spark, которое использует метасторское хранилище Hive, но в строке создания внешней таблицы Hive я получаю такую ​​ошибку при запуске приложения (журналы драйверов Spark):

Exception in thread "main" org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwxrwxr-x;
    at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:106)
    at org.apache.spark.sql.hive.HiveExternalCatalog.databaseExists(HiveExternalCatalog.scala:214)
    at org.apache.spark.sql.internal.SharedState.externalCatalog$lzycompute(SharedState.scala:114)
    at org.apache.spark.sql.internal.SharedState.externalCatalog(SharedState.scala:102)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwxrwxr-x
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.spark.sql.hive.client.HiveClientImpl.newState(HiveClientImpl.scala:183)
    at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:117)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

IЗапустите приложение, используя оператор Spark для K8s.Поэтому я проверил разрешения модуля драйверов каталогов приложения Spark:

ls -l /tmp
...
drwxrwxr-x    1 1001     1001          4096 Feb 22 16:47 hive

Если я попытаюсь изменить разрешения, это не даст никакого эффекта.Я также запускаю Hive metastore и HDFS в K8s.

Как эту проблему можно исправить?

1 Ответ

0 голосов
/ 23 февраля 2019

Это распространенная ошибка, которую можно исправить, создав каталог в другом месте и указав искру на использование нового каталога.

Шаг 1: Создайте новый каталог с именем tmpopsна /tmp/tmpops

Шаг 2: Дайте разрешение на каталог chmod -777 /tmp/tmpops Примечание: -777 для локального тестирования.Если вы работаете с конфиденциальными данными, обязательно добавьте этот путь в группы безопасности, чтобы избежать случайной утечки данных и лазеек в безопасности.

Шаг 3: Добавьте свойство ниже в свой сайт-улей.xml, на который ссылается приложение spark:

  <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/tmpops</value>
  </property>

Как только вы это сделаете, ошибка больше не будет появляться, пока кто-то не удалит этот каталог.

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