我在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上为我工作:
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命令。
使用最新版本的“winutils.exe”并尝试。 https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe