我正在Windows7上运行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->properties->security->advanced为所有用户设置了“完全控制”。
但我还是看到了同样的错误。需要帮忙吗?我已经检查了一堆链接,有人说这是一个错误的Spark1.5。这是真的吗?
谢谢,阿提
16条答案
按热度按时间mwkjh3gx1#
首先,确保您的操作系统使用了正确的winutils。下一步是权限。
在windows上,需要在cmd上运行以下命令:
希望您已经下载了winutils并设置了
HADOOP_HOME
变量。dw1jzc5e2#
我也面临这个问题。这个问题与网络有关。我使用特定的域在Windows7上安装了spark。
可以检查域名
开始->计算机->右键单击->属性->计算机名、域和工作组设置->单击更改->计算机名(选项卡)->单击更改->域名。
当我运行sparkshell命令时,它工作正常,没有任何错误。
在其他网络中,我收到写入权限错误。要避免此错误,请在上述路径中指定的域上运行spark命令。
tkqqtvp13#
在spark版本2.0.2(2016年11月14日)中解决的问题。使用此版本。版本2.1.0 2016年12月28日发行版也有相同的问题。
myzjeezk4#
在运行windows的vm上启动spark shell时出错:error msg:hdfs上的根目录:/tmp/hive应该是可写的。权限被拒绝
解决方案:/tmp/hive是临时目录。此位置仅保留临时文件。没有问题,即使我们删除这个目录,将被创建时,需要有适当的权限。
步骤1)在hdfs中,删除/tmp/hive目录==>“hdfs dfs-rm-r/tmp/hive”
2) 同样在操作系统级别,删除dir/tmp/hive==>rm-rf/tmp/hive
在这之后,启动了Spark壳,它工作得很好。。
jpfvwuh45#
请使用最新版本的“winutils.exe”并重试。https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe
6ie5vjzr6#
我收到了相同的错误“hdfs上的root scratch dir:/tmp/hive应该是可写的。当前权限是:rw rw rw-“在Windows7上。以下是我为解决问题所做的:
我在c:\ProgramFiles(x86)上安装了spark,它在c:下寻找/tmp/hive,即c:\tmp\hive
我从下载了winutils.exehttps://github.com/steveloughran/winutils. 我选择的版本与我安装spark时为hadoop包选择的版本相同。i、 例如,hadoop-2.7.1(您可以在bin文件夹下找到。,https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin)
现在使用以下命令使c:\tmp\hive文件夹可写winutils.exe chmod 777\tmp\hive
注意:对于以前版本的winutils,chmod命令设置了所需的权限,但spark仍然抱怨/tmp/hive文件夹不可写。
hujrc8aj7#
使用正确版本的winutils.exe帮了我一把。winutils应该来自spark为之预先构建的hadoop版本。
将hadoop\u home环境变量设置为winutils.exe的bin位置。我已将winutils.exe与c:\spark\bin文件一起存储。所以现在我的spark\u home和hadoop\u home指向同一个位置
C:\Spark
.既然winultls已经添加到path中,那么使用
winutils.exe chmod 777 C:\tmp\hive
mum43rcc8#
您需要在hdfs上设置此目录的权限,而不是本地文件系统。
/tmp
并不意味着C:\tmp
除非你fs.defaultFs
在core-site.xml中file://c:/
,这可能是个坏主意。使用检查
设置它使用
esyap4oy9#
这是一个简单的4步流程:
对于spark 2.0+:
下载hadoop for windows/winutils
将此添加到代码中(在sparksession初始化之前):
将此添加到spark会话(您可以将其更改为
C:/Temp
而不是桌面)。打开cmd.exe并运行:
tag5nh1u10#
下一个解决方案适用于windows:
首先,我定义了hadoop\u home。这里有详细的描述
接下来,我确实喜欢西蜀泰雅语,但有一点不同:
C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\hive
\tmp\hive
不是本地目录wdebmtf211#
您不必自己修复/tmp/hive目录的权限(如一些建议的答案)。威努提斯可以帮你。从下载相应版本的winutilshttps://github.com/steveloughran/winutils 并将其移动到spark的bin目录(例如。十。c:\opt\spark\spark-2.2.0-bin-hadoop2.6\bin)。那会解决的。
brjng4g312#
spark jira中也有同样的bug。这几天前已经解决了。这是链接。
https://issues.apache.org/jira/browse/spark-10528
评论有所有的选择,但没有保证的解决方案。
nwo49xxi13#
我是根据想法进行Spark测试的,在我的情况下,这个问题是错误的
winutils.exe
版本。我认为你需要把它和你的hadoop版本匹配起来。你可以找到winutils.exe
在这里0s7z1bwu14#
主要原因是你在错误的目录下启动了spark。请在d://tmp/hive中创建文件夹(授予完全权限),并在d:drive d:>sparkshell中启动spark
现在它可以工作了……)
ctehm74n15#
请尝试对文件夹/tmp/hive授予777权限,因为我认为spark是以匿名用户的身份运行的(它将属于其他用户类别),并且该权限应该是递归的。我在sparkforhive的1.5.1版本中也遇到了同样的问题,它通过在linux上使用下面的命令授予777权限来工作