创建 oozie 数据库架构时出错

Posted

技术标签:

【中文标题】创建 oozie 数据库架构时出错【英文标题】:error creating oozie database schema 【发布时间】:2013-05-10 13:04:52 【问题描述】:

我正在尝试在 RHEL5 上使用 RPM 设置 oozie (cdh4)。当我使用sudo -u oozie /usr/lib/oozie/bin/ooziedb.sh create -run 运行命令在 mysql 数据库中设置模式时,它给了我一个错误,指出“没有这样的文件或目录”。您可以查看相同here 的日志。

如果我尝试运行命令以使用sudo -u oozie /usr/lib/oozie/bin/ooziedb.sh create -sqlfile oozie-create.sql 创建脚本,它会给我一个错误,指出“无法连接到数据库”。您可以查看相同here 的日志。

我关注cdh4 installation site for oozie。

请帮我找出可能的错误。提前致谢。

【问题讨论】:

是否所有 Temp 目录都存在 (/var/lib/oozie),oozie 用户是否有权写入/执行该文件夹? 嗨@Chris!感谢您在这里尝试帮助我。 Here 是我在您提到的目录中的文件列表。您提到的目录及其内容属于 oozie 用户和组,我正在尝试使用相同的用户运行它,如上述指南中所述。 【参考方案1】:

您在尝试创建 init sql 文件时似乎遇到了某种权限问题。产生错误的 oozie cdh4 的代码是 this:

String sqlFile = (commandLine.hasOption(SQL_FILE_OPT))
      ? commandLine.getOptionValue(SQL_FILE_OPT)
      : File.createTempFile("ooziedb-", ".sql").getAbsolutePath();

所以你可以尝试传入 SQL_FILE_OPT 并命名一个你知道存在的路径,并且用户 oozie 也可以编写。您已经在第二个命令行中完成了,但我会完全限定 sql 文件的路径,并将其放在您知道可以写入的 oozie 的位置(/tmp,实际上应该是 File.createTempFile( ..) 创建文件)。

sudo -u oozie touch /tmp/oozie-create.sql
sudo -u oozie /usr/lib/oozie/bin/ooziedb.sh create \
    -sqlfile /tmp/oozie-create.sql

【讨论】:

嗨@Chris!我也尝试过这种方式,但仍然没有运气。我以某种方式相信我的 java home 存在一些问题,但是当我执行 echo 时,它指向了正确的路径。有什么方法可以通过将路径作为参数传递来显式覆盖路径?【参考方案2】:

就我而言,我的 db oozie 是空的,所以我删除了 db,然后重新创建它! $ mysql -u root -p 输入密码:******

mysql> 创建数据库 oozie; 查询正常,1 行受影响(0.03 秒)

mysql> 将 oozie.* 上的所有权限授予由 'oozie' 标识的 'oozie'@'localhost'; 查询正常,0 行受影响(0.03 秒)

mysql> 将 oozie.* 上的所有权限授予由 'oozie' 标识的 'oozie'@'%'; 查询正常,0 行受影响(0.03 秒)

mysql> 退出 再见

然后

验证数据库连接 完毕 检查数据库架构不存在 完毕 检查 OOZIE_SYS 表不存在 完毕 创建 SQL 架构 完毕 创建 OOZIE_SYS 表 完毕 设置 MySQL MEDIUMTEXT 标志 完成

已为 Oozie 版本“3.3.2-cdh4.7.0”创建了 Oozie DB

【讨论】:

以上是关于创建 oozie 数据库架构时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 oozie 工作流中读取 avro 数据文件时出错 - 类与新地图 API 模式不兼容

无法获取表 - 加载架构内容时出错

当架构中不存在字段时,如何防止 django 出错?

Oozie协作框架

在 Oozie 中单独处理行

BigQuery 命令“bq mk”引发错误“mk 操作中的 BigQuery 错误:读取架构时出错:”