我尝试在树莓派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'已存在 . (state = X0Y68,code = 30000)org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败! Metastore状态会不一致!! * schemaTool失败*
当我尝试在线谷歌此错误时似乎没有任何有用的信息 . 任何有关Hive如何与Derby合作的帮助或任何解释将不胜感激!
4 回答
我遇到了类似的问题,我通过删除derby数据库文件修复了
rm -Rf $HIVE_HOME/metastore_db
Be aware, this will remove your schema completely!
清理旧模式后,我可以重新初始化:
它可能与您调用hive的位置不同,尝试转到您的配置单元安装目录并运行
./bin/hive
安装配置单元后,如果你做的第一件事是运行配置单元,hive试图创建/初始化metastore_db,但显然可能无法正确运行 . 在最初的运行中,也许你看到了你的错误:
运行配置单元即使失败,也会在运行配置单元的目录中创建一个metastore_db目录:
所以当你尝试跑步的时候
Metastore已经存在,但还没有完整的形式 .
Soooooo的答案是:
schematool -initSchema -dbType derby
mv metastore_db metastore_db.tmp
schematool -initSchema -dbType derby
**另外值得注意的是:如果更改目录,将无法找到上面创建的metastore_db!我确信有一个很好的理由,我还不知道,因为我今天第一次尝试使用蜂巢 . 啊,这里有关于这个的信息:在我运行Hive的任何地方都创建了metastore_db
我在/ usr / local / Cellar / hive安装了带HomeBrew(MacOS)的配置单元,然后运行
schematool -dbType derby -initSchema
我收到以下错误消息:启动Metastore架构初始化为2.0.0初始化脚本hive-schema-2.0.0.derby.sql错误:FUNCTION'NUCLEUS_ASCII'已存在 . (state = X0Y68,code = 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
注释'NUCLEUS_ASCII'函数和'NUCLEUS_MATCHES'函数
重新运行
schematool -dbType derby -initSchema
,然后一切顺利!希望这能有所帮助 .
试试这个:schematool -dbType mysql -initSchema
阅读Hive SchemTool的文档:https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool