如何在Windows 10上运行Spark Streaming应用程序?

我在MS Windows 10 64位上运行Spark Streaming应用程序,该应用程序使用spark-mongo-connector将数据存储在MongoDB中。

每当我运行Spark应用程序,甚至pyspark我得到以下exception:

导致:java.lang.RuntimeException:HDFS上的根临时目录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环境variables,指向PATH环境variables中Hadoop目录的path和%HADOOP_HOME%\bin

所以我试图做到以下几点:

 > 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的本地库,查看后也似乎我需要重新libhadoop.so.1.0.0为64位平台的libhadoop.so.1.0.0

我在哪里可以find适用于Windows 10 64位的本机库? 或者还有解决这个问题的另一种方法吗? 从图书馆应用程序?

首先,你不必安装Hadoop来使用Spark,包括带有或不带有MongoDB的Spark Streaming模块。

由于你在Windows上,NTFS的POSIX不兼容问题已经winutils.exe ,所以你必须在PATH中使用winutils.exe ,因为Spark在封面下使用了Hadoop jar(用于文件系统访问)。 您可以从https://github.com/steveloughran/winutils下载winutils.exe 。 如果你不知道你应该使用哪个版本,那么从hadoop-2.7.1下载一个(但是它应该真正反映你的Spark Streaming的Hadoop版本,例如Spark 2.0.2的Hadoop 2.7.x版本)。

创建c:/tmp/hive目录并以admin身份执行以下命令(又名管理员身份):

 winutils.exe chmod -R 777 \tmp\hive 

PROTIP读取Windows上运行Hadoop的问题,以获取Apache Hadoop项目的正式答案。

下面的消息是无害的,你可以放心地忽视它。

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform