在配置单元中创建数据库时权限被拒绝错误

Posted

技术标签:

【中文标题】在配置单元中创建数据库时权限被拒绝错误【英文标题】:Permission Denied error while creating database in hive 【发布时间】:2015-08-25 18:30:50 【问题描述】:

我正在尝试在 hive 中创建数据库,但是当我在 HIVE 中运行以下查询时:

CREATE DATABASE BIGDATA;

我收到以下错误消息:

失败:元数据错误:MetaException(消息:得到异常:org.apache.hadoop.security.AccessControlException org.apache.hadoop.security.AccessControlException:权限被拒绝:user=aseema,access=WRITE,inode="" :hduser:supergroup:rwxr-xr-x) FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1

是什么原因造成的?

【问题讨论】:

它只是说您没有权限写入数据库。检查您的权限是否正确。 【参考方案1】:

这是因为hdfs中没有用户aseema的权限。请按照以下步骤操作。

以 hduser 身份登录并执行以下操作(从日志看来 hduser 是超级用户)

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir /tmp
hadoop fs -chmod -R 777 /user/hive
hadoop fs -chmod 777 /tmp

在此之后,尝试从 aseema 用户执行 create database 语句。

【讨论】:

我在 netbeans 中工作,这个错误杀死了我将近 1 个小时。但是这些命令的帮助现在我能够创建表并对其进行操作。 这确实有效,但这是一种丑陋且不安全的不良做法。在生产环境中你会如何处理?【参考方案2】:

如果你是从本地模式运行,那么你应该从 hdfs 用户运行这个命令:

su hdfs

然后根据需要更改权限,如下所示:

hdfs dfs -chown -R <username_of_new_owner> /user

【讨论】:

以上是关于在配置单元中创建数据库时权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

在数据库'master'中创建表权限被拒绝

当我尝试在 /Library/Application Support/ 中创建文件夹“efiLinq”时出现权限被拒绝错误

运行配置单元查询时权限被拒绝

尝试在只写目录中创建/删除/重命名文件时权限被拒绝

在 phpMyAdmin 中创建函数 - 错误:拒绝访问您需要此操作的超级权限

CloudScheduler 403 创建时权限被拒绝