Hive安装问题:未初始化Hive Metastore数据库

As *_*nor 37 installation hadoop hive derby

我尝试在树莓派2上安装配置单元.我通过解压缩压缩的Hive包安装Hive,并在我创建的hduser用户组下手动配置$ HADOOP_HOME和$ HIVE_HOME.运行配置单元时,我收到以下错误消息:配置单元

错误StatusLogger找不到log4j2配置文件.使用默认配置:仅将错误记录到控制台.

线程"main"中的异常java.lang.RuntimeException:未初始化Hive Metastore数据库.请使用schematool(例如./schematool -initSchema -dbType ...)来创建架构.如果需要,不要忘记在JDBC连接字符串中包含自动创建底层数据库的选项(例如,mysql的createDatabaseIfNotExist = true)

所以我运行了上面错误消息中建议的命令:schematool -dbType derby -initSchema我收到了错误消息:

错误:FUNCTION'NUCLEUS_ASCII'已存在.(state = X0Y68,code = 30000)org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败!Metastore状态会不一致!! *schemaTool失败*

当我尝试在线谷歌此错误时似乎没有任何有用的信息.任何有关Hive如何与Derby合作的帮助或任何解释将不胜感激!

RJ *_*ole 125

安装配置单元后,如果你做的第一件事是运行配置单元,则配置单元尝试创建/初始化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)
Run Code Online (Sandbox Code Playgroud)

运行配置单元即使失败,也会在运行配置单元的目录中创建一个metastore_db目录:

ubuntu15-laptop: ~ $>ls -l |grep meta
drwxrwxr-x 5 testuser testuser 4096 Apr 14 12:44 metastore_db
Run Code Online (Sandbox Code Playgroud)

所以当你尝试跑步的时候

ubuntu15-laptop: ~ $>schematool -initSchema -dbType derby
Run Code Online (Sandbox Code Playgroud)

Metastore已经存在,但还没有完整的形式.

Soooooo的答案是:

  1. 在您第一次运行配置单元之前,请运行

    schematool -initSchema -dbType derby

  2. 如果您已经运行了hive,然后尝试使用initSchema并且它失败了:

    mv metastore_db metastore_db.tmp

  3. 重新跑

    schematool -initSchema -dbType derby

  4. 再次运行配置单元

**另外值得注意的是:如果更改目录,将无法找到上面创建的metastore_db!我确信有一个很好的理由,我还不知道,因为我今天第一次尝试使用蜂巢.啊,这里的信息是:我在运行Hive的地方创建了metastore_db

  • 请注意,在重新运行架构工具之前,您需要在删除或移动 metastore_db 文件夹后重新启动 derby。否则,您将在重新运行时遇到相同的错误。 (2认同)
  • 我的天哪,为什么在官方文档中没有提到这一点。谢谢! (2认同)

小智 17

我在/ 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文件夹,所以我尝试了:

  1. find /usr/ -name hive-schema-2.0.0.derby.sql
  2. vi /usr/local/Cellar/hive/2.0.1/libexec/scripts/metastore/upgrade/derby/hive-schema-2.0.0.derby.sql
  3. 评论'NUCLEUS_ASCII'函数和'NUCLEUS_MATCHES'函数
  4. 重新运行schematool -dbType derby -initSchema,然后一切顺利!

希望这有帮助的人.


sti*_*pie 11

我遇到了类似的问题,我通过删除derby数据库文件修复了这个问题 rm -Rf $HIVE_HOME/metastore_db

请注意,这将完全删除您的架构!

清理旧模式后,我可以重新初始化:

$HIVE_HOME/bin/schematool -initSchema -dbType derby
Run Code Online (Sandbox Code Playgroud)

它可能与您调用hive的位置不同,尝试转到您的配置单元安装目录并运行 ./bin/hive