无法在 Hive 中创建表

Posted

技术标签:

【中文标题】无法在 Hive 中创建表【英文标题】:Unable to create table in Hive 【发布时间】:2016-09-15 06:27:20 【问题描述】:

我正在运行下面的简单查询来创建一个简单的表。

创建表测试(id int, name varchar(20));

但我收到以下错误,请告知具体需要做什么。

FAILED:执行错误,返回代码 1 从 org.apache.hadoop.hive.ql.exec.DDLTask。元异常(消息:文件:/用户 /hive/warehouse/test 不是目录或无法创建)

我已授予对 /user/hive/warehouse 文件夹的完全读/写权限。

【问题讨论】:

我认为这只是 SO 上的显示问题,但请检查实际错误消息是否还包含 /user 和 /hive/warehouse/test 之间的空格 【参考方案1】:

您的 hive 用户没有在 hdfs 中创建 director 的权限。每当您创建表时,hive 都会在 User/hive/warehouse/table 中创建一个目录,但在这里它无法在 user/hive/warehouse/ 中创建一个目录,因此请授予该目录权限以允许您的用户创建表。

http://www.cloudera.com/documentation/archive/cdh/4-x/4-2-0/CDH4-Installation-Guide/cdh4ig_topic_18_7.html

【讨论】:

如果已经授予权限,请检查您在 hive-site.xml 中指定为 hive.metastore.warehouse.dir 的路径 谢谢。如果您能考虑***.com/questions/56121592/…,我将不胜感激,就我而言,/user/hive/warehouse/ 不存在,因此我无法更改其访问模式。它位于哪里?【参考方案2】:

听起来像是权限问题。下面的更改模式命令可能会有所帮助。

hadoop fs -chmod -R 755 /user/hive/warehouse/

【讨论】:

【参考方案3】:

错误信息说

file:/user /hive/warehouse/test". 

尽管 /user 和路径的其余部分之间有空格,file:/ 意味着 Hive 正在尝试在本地文件系统上而不是 hdfs 上创建该目录。访问配置可能有问题。我会检查 HADOOP_CONF_DIR 环境变量是否已正确初始化。

【讨论】:

【参考方案4】:

对我来说,这个问题和你的完全一样(创建内部表),与权限无关,但与存储有关,它被 100% 使用。尝试检查是否相同。

【讨论】:

以上是关于无法在 Hive 中创建表的主要内容,如果未能解决你的问题,请参考以下文章

无法在 HIVE 中创建表

Pyspark 无法在 hive 中创建镶木地板表

hive 中创建表的三种方式

使用 create-hive-table 在 Hive 中创建表时如何使用自定义分隔符

hive 建表方式及参数详解

Oracle 10g中如何创建表