我在MS Windows 10 64位上运行Spark Streaming应用程序,使用spark-mongo-connector在MongoDB中存储数据。
每当我运行Spark应用程序时,即使pyspark
我也会遇到以下异常:
引起:java.lang.RuntimeException:HDFS上的root scratch dir:/ tmp / hive应该是可写的。目前的权限是:rw-rw-rw -
完整堆栈跟踪:
Caused by: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:612)
at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
... 32 more
我使用 Hadoop 3.0.0 alpha1 ,我在本地安装了HADOOP_HOME
环境变量,指向Hadoop dir和%HADOOP_HOME%\bin
中PATH
的路径环境变量。
所以我尝试做以下事情:
> hdfs dfs -ls /tmp
Found 1 items
drw-rw-rw- - 0 2016-12-26 16:08 /tmp/hive
我尝试按以下方式更改权限:
hdfs dfs -chmod 777 /tmp/hive
但是这个命令输出:
WARN util.NativeCodeLoader:无法为您的平台加载native-hadoop库...使用适用的builtin-java类
我的操作系统似乎缺少Hadoop的原生库,在查看之后,我还需要重新考虑64位平台的libhadoop.so.1.0.0
。
在哪里可以找到适用于Windows 10 64位的本机库? 还是有另一种解决方法吗?来自图书馆的aprt?
答案 0 :(得分:1)
首先,您不必安装Hadoop来使用Spark,包括使用或不使用MongoDB的Spark Streaming模块。
由于您在Windows上存在已知的NTFS问题。 POSIX不兼容,因此您必须在winutils.exe
中拥有PATH
,因为Spark确实使用了Hadoop jar(用于文件系统访问)。您可以从this question and answer下载winutils.exe
。如果您不知道应该使用哪个版本,请从hadoop-2.7.1
下载一个(但它应该真正反映您的Spark Streaming构建的Hadoop版本,例如Spark 2.0.2的Hadoop 2.7.x)。
创建c:/tmp/hive
目录并以管理员身份执行以下操作(又名以管理员身份运行):
winutils.exe chmod -R 777 \tmp\hive
PROTIP 请阅读https://github.com/steveloughran/winutils以获取Apache Hadoop项目的正式答案。
以下信息无害,您可以放心地忽略它。
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform