Проблемы с установкой улья: база данных метаданных улья не инициализирована
Я попытался установить куст на малине pi 2. Я установил Hive, распакуя пакет Hive и установил $HADOOP_HOME и $HIVE_HOME вручную под пользовательской группой hduser, которую я создал. При запуске улья появляется следующее сообщение об ошибке:
Улей
ОШИБКА StatusLogger Файл конфигурации log4j2 не найден. Использование конфигурации по умолчанию: запись только ошибок на консоль.
Исключение в потоке "main" java.lang.RuntimeException: База данных метаданных улья не инициализируется. Для создания схемы используйте schematool (например./schematool -initSchema -dbType...). Если необходимо, не забудьте включить опцию автоматического создания базовой базы данных в строке подключения JDBC (например,? CreateDatabaseIfNotExist = true для mysql)
Итак, я запустил команду, предложенную в приведенном выше сообщении об ошибке:
schematool -dbType derby -initSchema
Я получил сообщение об ошибке:
Ошибка: FUNCTION 'NUCLEUS_ASCII' уже существует. (Состояние = X0Y68, код = 30000) org.apache.hadoop.hive.metastore.HiveMetaException: инициализация схемы НЕИСПРАВНО! Состояние Метасторе было бы непоследовательным!! * сбой схемы schemaTool
Кажется, нет никакой полезной информации, когда я пытаюсь выполнить эту ошибку в Интернете. Любая помощь или любое объяснение того, как работает Hive с Derby, будут оценены!
Ответы
Ответ 1
После установки улья, если первое, что вы сделали, это запустить куст, куст попытался создать/инициализировать metastore_db, но, видимо, может не получиться правильно. В этом первоначальном запуске, возможно, вы заметили свою ошибку:
Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)
Запуск улья, даже если он терпит неудачу, создает каталог metastore_db в каталоге, из которого вы запустили куст:
ubuntu15-laptop: ~ $>ls -l |grep meta
drwxrwxr-x 5 testuser testuser 4096 Apr 14 12:44 metastore_db
Итак, когда вы попытались запустить
ubuntu15-laptop: ~ $>schematool -initSchema -dbType derby
Метастор уже существует, но не в полной форме.
Soooooo ответ:
-
Прежде чем запускать улей в первый раз, запустите
schematool -initSchema -dbType derby
-
Если вы уже запустили куст, а затем попытались выполнить initSchema и он не смог:
mv metastore_db metastore_db.tmp
-
Повторите
schematool -initSchema -dbType derby
-
Запустите куст снова
** Также обратите внимание: если вы меняете каталоги, созданный выше metastore_db не будет найден! Я уверен, что есть веская причина для этого, что я еще не знаю, потому что я буквально пытаюсь использовать куст в первый раз сегодня. Ahhh здесь информация об этом: metastore_db создается везде, где я запускаю Hive
Ответ 2
Я установил куст с HomeBrew (MacOS) в /usr/local/Cellar/hive и afer running
schematool -dbType derby -initSchema
Появляется следующее сообщение об ошибке:
Запуск инициализации схемы метастабильности до 2.0.0
Инициализация script hive-schema-2.0.0.derby.sql
Ошибка: FUNCTION 'NUCLEUS_ASCII' уже существует. (Состояние = X0Y68, код = 30000)
org.apache.hadoop.hive.metastore.HiveMetaException: инициализация схемы НЕИСПРАВНО! Состояние метасторе было бы непоследовательным!!
Однако я не могу найти папку metastore_db или metastore_db.tmp в пути установки, поэтому я попробовал:
-
find /usr/ -name hive-schema-2.0.0.derby.sql
-
vi /usr/local/Cellar/hive/2.0.1/libexec/scripts/metastore/upgrade/derby/hive-schema-2.0.0.derby.sql
- комментарий функции 'NUCLEUS_ASCII' и 'NUCLEUS_MATCHES'
- rerun
schematool -dbType derby -initSchema
, тогда все будет хорошо!
надеюсь, что это поможет кому-то.
Ответ 3
У меня возникла аналогичная проблема, которую я исправил, удалив файлы базы данных дерби rm -Rf $HIVE_HOME/metastore_db
Помните, что это полностью удалит вашу схему!
После очистки старой схемы я мог бы повторно инициализировать с помощью:
$HIVE_HOME/bin/schematool -initSchema -dbType derby
Это может отличаться от того, где вы называете улей, попробуйте перейти в каталог установки улья и запустите ./bin/hive
Ответ 4
Попробуйте следующее:
schematool -dbТип mysql -initSchema
Прочитайте документацию по программе Hive SchemTool:
https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool
Ответ 5
Если вы используете Derby, вы можете удалить файлы DB и запустить процесс init.
Или, если проблема не устранена, вы можете отредактировать файлы SQL, которые использует Hive. Например:
/usr/hdp/2.5.6.0-40/hive2/scripts/metastore/upgrade/mysql/
содержит те для MySQL.