HDFS上的root scratch dir:/ tmp / hive应该是可写的。 当前的权限是:rw-rw-rw-(在Windows上)

我在Windows 7上运行Spark。当我使用Hive时,我看到以下错误

The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw- 

权限设置如下

 C:\tmp>ls -la total 20 drwxr-xr-x 1 ADMIN Administ 0 Dec 10 13:06 . drwxr-xr-x 1 ADMIN Administ 28672 Dec 10 09:53 .. drwxr-xr-x 2 ADMIN Administ 0 Dec 10 12:22 hive 

我已经从Windows->属性 – >安全 – >高级的所有用户设置“完全控制”。

但是我仍然看到同样的错误。 请帮忙吗? 我查了一堆链接,有人说这是Spark 1.5上的一个bug。 这是真的?

谢谢Aarthi

首先,确保你的操作系统使用了正确的Winutils。 然后下一步是权限。
在Windows上,您需要在cmd上运行以下命令:

 D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive 

希望你已经下载winutils已设置HADOOP_HOME。

首先要检查你的电脑域名。 尝试

 c:\work\hadoop-2.2\bin\winutils.exe ls c:/tmp/hive 

如果此命令表示拒绝访问FindFileOwnerAndPermission错误(1789):此工作站与主域之间的信任关系失败

这意味着您的计算机域控制器无法访问,可能的原因可能是您不在与您的系统域控制器相同的VPN上。连接到VPN并重试。

现在尝试Viktor或Nishu提供的解决方案。

下一个解决方案在Windows上为我工作:

  • 首先,我定义了HADOOP_HOME。 这里详细描述
  • 接下来,我喜欢Nishu Tayal,但有一点不同: C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\hive

\tmp\hive不是本地目录

您需要在HDFS上设置此目录的权限,而不是您的本地文件系统。 /tmp并不意味着C:\tmp除非您在core-site.xml中将fs.defaultFs设置为file://c:/ ,这可能是一个坏主意。

检查它使用

 hdfs dfs -ls /tmp 

设置使用

 hdfs dfs -chmod 777 /tmp/hive 

在Windows上运行的VM上启动spark-shell时出错:错误消息:HDFS上的根临时目录:/ tmp / hive应该是可写的。 没有权限

解决方案:/ tmp / hive是临时目录。 只有临时文件保存在这个位置。 即使我们删除这个目录也没有问题,只要有适当的权限就可以创建。

步骤1)在hdfs中,删除/ tmp / hive目录==>“hdfs dfs -rm -r / tmp / hive”

2)在操作系统级别,删除dir / tmp / hive ==> rm -rf / tmp / hive

在此之后,开始火花外壳,它工作得很好..

可以请尝试给文件夹/ tmp / hive授予777权限,因为我认为spark是作为匿名用户运行的(它将进入其他用户类别),并且此权限应该是递归的。 我在1.5.1版本的spark中有同样的问题,并且在linux上使用下面的命令给了777权限

 chmod -r 777 /tmp/hive 

Spark Jira中也有一个bug。 这已经在几天前解决了。 链接在这里。

https://issues.apache.org/jira/browse/SPARK-10528

评论有所有选项,但没有保证的解决方案。

Spark版本2.0.2(2016年11月14日)解决了问题。 使用这个版本。 版本2.1.0 2016年12月28日发布有相同的问题。

主要原因是你在错误的目录开始了火花。 请在D:// tmp / hive(提供完整的权限)中创建文件夹,并在D:盘符D中启动您的火花:> spark-shell

现在它将工作.. 🙂

我也面临这个问题。 这个问题与网络有关。 我使用特定的域在Windows 7上安装了spark。

可以勾选域名开始 – >电脑 – >右键 – >属性 – >电脑名称,域名和工作组设置 – >点击更改 – >电脑名称(Tab) – >点击更改 – >域名。

当我运行spark-shell命令时,它工作正常,没有任何错误。

在其他网络中,我收到了写入权限错误。 为避免此错误,请在上述路径中指定的域上运行spark命令。