我刚刚开始使用Apache Hive,我正在使用我的本地Ubuntu盒子12.04,Hive 0.10.0和Hadoop 1.1.2。
遵循Apache网站上的官方“Getting Started”指南,我现在停留在Hadoop命令中,使用指南中的命令创建hive Metastore:
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
错误为mkdir: failed to create /user/hive/warehouse
Hive是否需要在特定模式下使用hadoop?我知道我不需要为我的Hadoop安装做太多其他更新JAVA_HOME,因此它处于独立模式。我确信Hadoop本身正在工作,因为我运行了hadoop安装附带的PI示例。
此外,创建/tmp
的另一个命令显示/tmp
目录已存在,因此未重新创建,/bin/hadoop fs -ls
列出当前目录。
那么,我怎么能绕过它呢?
答案 0 :(得分:22)
几乎所有文档示例都有错误。就像unix一样,你需要" -p"标志也可以创建父目录,除非您已经创建了它们。这个命令可以工作。
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
答案 1 :(得分:4)
在本地系统上运行配置单元时,只需添加到〜/ .hiverc:
SET hive.metastore.warehouse.dir=${env:HOME}/Documents/hive-warehouse;
您可以指定要用作仓库的任何文件夹。显然,任何其他hive configuration方法都可以(例如hive-site.xml或hive -hiveconf)。
在说“或在您的主目录中创建仓库”时,可能会想到 Ambarish Hazarnis 。
答案 2 :(得分:3)
这似乎是一个许可问题。你有权访问根文件夹/? 请尝试以下选项 -
1. Run command as superuser
OR
2.Create the warehouse in your home directory.
如果有帮助,请告诉我们。祝你好运!
答案 3 :(得分:1)
在spark配置中设置hadoop属性时,请在其前面添加spark.hadoop
。
因此设置
conf.set("spark.hadoop.hive.metastore.warehouse.dir","/new/location")
这适用于旧版本的Spark。该属性已更改为spark 2.0.0
答案 4 :(得分:1)
为看到同样问题的Cloudera CDH用户添加ref的答案。
如果您使用的是Cloudera CDH发行版,请确保已按照以下步骤操作:
Cloudera默认创建了/ user / hive / warehouse文件夹。只是YARN和HDFS可能无法启动并运行以访问此路径。
答案 5 :(得分:0)
虽然这是一个简单的权限问题,在上面的评论中使用sudo解决了这个问题,但有一些注意事项:
在主目录中创建它应该也可以,但是你可能需要更新Metastore路径的hive设置,我认为默认为/ user / hive / warehouse
我遇到了另一个带有Hive shell的CREATE TABLE语句错误,错误是这样的:
蜂房> CREATE TABLE戳(foo INT,bar STRING); FAILED:元数据错误:MetaException(消息:异常:java.io.FileNotFoundException文件文件:/ user / hive / warehouse / pokes不存在。) FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1
它变成了另一个权限问题,您必须创建一个名为“hive”的组,然后将当前用户添加到该组,并将/ user / hive / warehouse的所有权更改为该组。在那之后,它的工作原理。详情可在以下链接中找到:
答案 6 :(得分:0)
如果你运行linux check(在hadoop core-site.xml中)数据目录&权限,看起来你保留了默认的/ data / tmp和im大多数情况下都会获得root权限。 更改xml配置文件,删除/ data / tmp并运行fs格式(修改核心xml配置后的OC)
答案 7 :(得分:0)
我建议使用hive的上层版本,即1.1.0版本,0.10.0非常错误。
答案 8 :(得分:0)
答案 9 :(得分:0)
我正在使用MacOS和自制软件作为程序包管理器。我必须将hive-site.xml中的属性设置为
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/Cellar/hive/2.3.1/libexec/conf/warehouse</value>
</property>