我试着在树莓皮2上安装Hive。我通过解压压缩的配置单元包安装了配置单元,并在我创建的hduser用户组下手动配置$hadoop\u home和$hive\u home。运行hive时,我收到以下错误消息:hive
错误状态记录器未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。
线程“main”java.lang.runtimeexception中出现异常:配置单元元存储数据库未初始化。请使用schematool(例如../schematool-initschema-dbtype…)创建模式。如果需要,不要忘记在jdbc连接字符串中包含自动创建基础数据库的选项(例如,对于mysql,createdatabaseifnotexist=true)
所以我运行了上面错误消息中建议的命令:schematool-dbtypederby-initschema我得到了错误消息:
错误:函数'nucleus\u ascii'已存在(state=x0y68,code=30000)org.apache.hadoop.hive.metastore.hivemetaexception:架构初始化失败!元存储状态不一致!!schematool失败
似乎没有任何有用的信息,当我试图谷歌这个错误在线。任何帮助或任何关于如何与德比Hive工程解释将不胜感激!
5条答案
按热度按时间gopyfrb31#
试试这个:schematool-dbtypemysql-initschema
阅读配置单元schemtool的文档:https://cwiki.apache.org/confluence/display/hive/hive+schema+tool
ffx8fchx2#
我在/usr/local/cellar/hive安装了带有自制软件(macos)的hive,运行后
schematool -dbType derby -initSchema
我收到以下错误消息:正在启动metastore架构初始化到2.0.0初始化脚本hive-schema-2.0.0.derby.sql错误:函数“nucleus\u ascii”已存在(state=x0y68,code=30000)org.apache.hadoop.hive.metastore.hivemetaexception:架构初始化失败!元存储状态不一致!!
但是,我在安装路径下找不到metastore\ u db或metastore\ u 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\u ascii”函数和“nucleus\u matches”函数重新运行
schematool -dbType derby -initSchema
,然后一切顺利!希望这能帮助别人。
frebpwbc3#
我遇到了一个类似的问题,我通过删除derby数据库文件解决了这个问题
rm -Rf $HIVE_HOME/metastore_db
请注意,这将完全删除您的模式!清除旧模式后,我可以使用以下方法重新初始化:
它可能与您调用配置单元的位置不同,请尝试转到配置单元安装目录并运行
./bin/hive
ruarlubt4#
在安装hive之后,如果您做的第一件事是运行hive,那么hive尝试创建/初始化metastore\u db,但显然可能没有正确执行。在最初的运行中,也许你看到了错误:
运行配置单元时,即使失败,也会在运行配置单元的目录中创建metastore\u db目录:
所以当你试着跑的时候
元存储已经存在,但不是完整的形式。
所以答案是:
在你第一次跑 hive 之前,快跑
schematool-initschema-dbtype derby
如果您已经运行了配置单元,然后尝试初始化架构,但失败了:
mv元存储\数据库元存储\数据库.tmp
重新运行
schematool-initschema-dbtype derby
再次运行Hive
**另请注意:如果更改目录,将找不到上面创建的metastore\u db!我肯定有一个很好的理由,我还不知道,因为我真的是第一次尝试使用Hive今天。这里有关于这个的信息:metastore\u db创建在我运行hive的地方
ccrfmcuu5#
如果使用derby,可以删除db文件并运行init进程。
或者,如果问题仍然存在,您可以编辑配置单元使用的sql文件。例如:
/usr/hdp/2.5.6.0-40/hive2/scripts/metastore/upgrade/mysql/
包含mysql的那些。