我在mswindows1064位上运行了一个spark流应用程序,它使用spark mongo连接器在mongodb中存储数据。
每当我运行spark应用程序时,甚至 pyspark
我得到以下例外:
原因:java.lang.runtimeexception:hdfs上的根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
我使用本地安装的hadoop3.0.0alpha1 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:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
我似乎错过了hadoop的本机库,在我的操作系统上,这也表明,我需要重新编译 libhadoop.so.1.0.0
对于64位平台。
在哪里可以找到64位windows 10的本机库?还是有别的办法解决这个问题?是从图书馆来的吗?
1条答案
按热度按时间eqqqjvef1#
首先,您不必安装hadoop就可以使用spark,包括带或不带mongodb的spark流模块。
由于您使用的是windows,因此存在已知的ntfs的posix不兼容问题,因此您必须
winutils.exe
在PATH
因为spark在幕后使用hadoopjar(用于文件系统访问)。你可以下载winutils.exe
从https://github.com/steveloughran/winutils. 从下载一个hadoop-2.7.1
如果您不知道应该使用哪个版本(但它应该真正反映您的spark streaming构建时使用的hadoop版本,例如,spark 2.0.2的hadoop 2.7.x)。创建
c:/tmp/hive
目录并以管理员身份执行以下操作(也称为以管理员身份运行):protip阅读了apachehadoop项目的官方答案:在windows上运行hadoop时遇到的问题。
下面的信息是无害的,你可以放心地忽略它。
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform