(在windows上)

ztmd8pv5  于 2021-06-26  发布在  Hive
关注(0)|答案(16)|浏览(378)

我正在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。这是真的吗?
谢谢,阿提

mwkjh3gx

mwkjh3gx1#

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

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

希望您已经下载了winutils并设置了 HADOOP_HOME 变量。

dw1jzc5e

dw1jzc5e2#

我也面临这个问题。这个问题与网络有关。我使用特定的域在Windows7上安装了spark。
可以检查域名
开始->计算机->右键单击->属性->计算机名、域和工作组设置->单击更改->计算机名(选项卡)->单击更改->域名。
当我运行sparkshell命令时,它工作正常,没有任何错误。
在其他网络中,我收到写入权限错误。要避免此错误,请在上述路径中指定的域上运行spark命令。

tkqqtvp1

tkqqtvp13#

在spark版本2.0.2(2016年11月14日)中解决的问题。使用此版本。版本2.1.0 2016年12月28日发行版也有相同的问题。

myzjeezk

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壳,它工作得很好。。

jpfvwuh4

jpfvwuh45#

请使用最新版本的“winutils.exe”并重试。https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe

6ie5vjzr

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文件夹不可写。

hujrc8aj

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

mum43rcc

mum43rcc8#

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

hdfs dfs -ls /tmp

设置它使用

hdfs dfs -chmod 777 /tmp/hive
esyap4oy

esyap4oy9#

这是一个简单的4步流程:
对于spark 2.0+:
下载hadoop for windows/winutils
将此添加到代码中(在sparksession初始化之前):

if(getOS()=="windows"){
    System.setProperty("hadoop.home.dir", "C:/Users//winutils-master/hadoop-2.7.1"); 
}

将此添加到spark会话(您可以将其更改为 C:/Temp 而不是桌面)。

.config("hive.exec.scratchdir","C:/Users//Desktop/tmphive")

打开cmd.exe并运行:

"path\to\hadoop-2.7.1\bin\winutils.exe" chmod 777 C:\Users\\Desktop\tmphive
tag5nh1u

tag5nh1u10#

下一个解决方案适用于windows:
首先,我定义了hadoop\u home。这里有详细的描述
接下来,我确实喜欢西蜀泰雅语,但有一点不同:
C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\hive \tmp\hive 不是本地目录

wdebmtf2

wdebmtf211#

您不必自己修复/tmp/hive目录的权限(如一些建议的答案)。威努提斯可以帮你。从下载相应版本的winutilshttps://github.com/steveloughran/winutils 并将其移动到spark的bin目录(例如。十。c:\opt\spark\spark-2.2.0-bin-hadoop2.6\bin)。那会解决的。

brjng4g3

brjng4g312#

spark jira中也有同样的bug。这几天前已经解决了。这是链接。
https://issues.apache.org/jira/browse/spark-10528
评论有所有的选择,但没有保证的解决方案。

nwo49xxi

nwo49xxi13#

我是根据想法进行Spark测试的,在我的情况下,这个问题是错误的 winutils.exe 版本。我认为你需要把它和你的hadoop版本匹配起来。你可以找到 winutils.exe 在这里

0s7z1bwu

0s7z1bwu14#

主要原因是你在错误的目录下启动了spark。请在d://tmp/hive中创建文件夹(授予完全权限),并在d:drive d:>sparkshell中启动spark
现在它可以工作了……)

ctehm74n

ctehm74n15#

请尝试对文件夹/tmp/hive授予777权限,因为我认为spark是以匿名用户的身份运行的(它将属于其他用户类别),并且该权限应该是递归的。我在sparkforhive的1.5.1版本中也遇到了同样的问题,它通过在linux上使用下面的命令授予777权限来工作

chmod -r 777 /tmp/hive

相关问题