我尝试在raspberry pi 2上安装配置单元。我通过解压缩压缩的Hive包安装了Hive,并在我创建的hduser用户组下手动配置$ HADOOP_HOME和$ HIVE_HOME。运行配置单元时,我收到以下错误消息: 蜂房
ERROR StatusLogger找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台。
线程中的异常" main" java.lang.RuntimeException:未初始化Hive Metastore数据库。请使用schematool(例如./schematool -initSchema -dbType ...)来创建架构。如果需要,请不要忘记在JDBC连接字符串中包含自动创建底层数据库的选项(例如,mysql的createDatabaseIfNotExist = true)
所以我运行了上面错误消息中建议的命令: schematool -dbType derby -initSchema 我收到了错误消息:
错误:功能' NUCLEUS_ASCII'已经存在。 (状态= X0Y68,代码= 30000) org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败! Metastore状态会不一致!! * schemaTool失败*
当我尝试在线谷歌此错误时,似乎没有任何有用的信息。任何关于Hive如何与Derby合作的帮助或任何解释都将不胜感激!
答案 0 :(得分:119)
安装配置单元后,如果您执行的第一件事是运行配置单元,则配置单元尝试创建/初始化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
Metastore已经存在,但尚未完整。
Soooooo答案是:
首次运行配置单元之前,请运行
schematool -initSchema -dbType derby
如果您已经运行了hive,然后尝试使用initSchema并且它失败了:
mv metastore_db metastore_db.tmp
重新开始
schematool -initSchema -dbType derby
再次运行配置单元
**另外值得注意的是:如果更改目录,将无法找到上面创建的metastore_db!我确信有一个很好的理由,我还不知道,因为我今天第一次尝试使用蜂巢。啊,这里有关于此的信息:在我运行Hive的任何地方创建了metastore_db
答案 1 :(得分:18)
我使用HomeBrew(MacOS)在/ usr / local / Cellar / hive上安装了hive,然后运行
schematool -dbType derby -initSchema
我收到以下错误消息:
启动Metastore架构初始化为2.0.0 初始化脚本hive-schema-2.0.0.derby.sql 错误:FUNCTION'NUCLEUS_ASCII'已存在。 (状态= X0Y68,代码= 30000) org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败! Metastore状态会不一致!!
但是,我在安装路径下找不到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
schematool -dbType derby -initSchema
,然后一切顺利!答案 2 :(得分:11)
我遇到了类似的问题,我通过删除derby数据库文件rm -Rf $HIVE_HOME/metastore_db
请注意,这将完全删除您的架构!
清理旧架构后,我可以重新初始化:
$HIVE_HOME/bin/schematool -initSchema -dbType derby
它可能与您调用hive的位置不同,请尝试转到您的配置单元安装目录并运行./bin/hive
答案 3 :(得分:1)
试试这个: schematool -dbType mysql -initSchema
阅读Hive SchemTool的文档: https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool
答案 4 :(得分:0)
如果使用Derby,则可以删除数据库文件并运行初始化过程。
或者如果问题仍然存在,则可以编辑Hive使用的SQL文件。例如:
/usr/hdp/2.5.6.0-40/hive2/scripts/metastore/upgrade/mysql/
包含用于mysql的内容。