Java Windows上的Apache Spark事件日志配置出现错误

Java Windows上的Apache Spark事件日志配置出现错误,java,windows,hadoop,apache-spark,event-log,Java,Windows,Hadoop,Apache Spark,Event Log,我正在Windows上使用Spark 1.5。我还没有安装任何单独的Hadoop二进制文件 我管理着一个主人和一个工人。 这是一个简单的HelloWorld程序,如下所示: package com.java.spark; import java.io.Serializable; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark

我正在Windows上使用Spark 1.5。我还没有安装任何单独的Hadoop二进制文件

我管理着一个主人和一个工人。 这是一个简单的HelloWorld程序,如下所示:

package com.java.spark;



import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.VoidFunction;

public class HelloWorld implements Serializable{
/**
 * 
 */
private static final long serialVersionUID = -7926281781224763077L;

public static void main(String[] args) {

    // Local mode
    //SparkConf sparkConf = new SparkConf().setAppName("HelloWorld").setMaster("local");
    SparkConf sparkConf = new SparkConf().setAppName("HelloWorld").setMaster("spark://192.168.1.106:7077")
                                         .set("spark.eventLog.enabled", "true")
                                         .set("spark.eventLog.dir", "file:///D:/SparkEventLogsHistory");
                                        //.set("spark.eventLog.dir", "/work/");
//tried many combinations above but all gives error.
        JavaSparkContext ctx = new JavaSparkContext(sparkConf);
        String[] arr = new String[] { "John", "Paul", "Gavin", "Rahul", "Angel" };
    List<String> inputList = Arrays.asList(arr);
    JavaRDD<String> inputRDD = ctx.parallelize(inputList);
    inputRDD.foreach(new VoidFunction<String>() {

        public void call(String input) throws Exception {
            System.out.println(input);

        }
    });

}
}
package com.java.spark;
导入java.io.Serializable;
导入java.util.array;
导入java.util.List;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.JavaRDD;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.api.java.function.VoidFunction;
公共类HelloWorld实现了可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=-7926281781224763077L;
公共静态void main(字符串[]args){
//本地模式
//SparkConf SparkConf=new SparkConf().setAppName(“HelloWorld”).setMaster(“local”);
SparkConf SparkConf=new SparkConf().setAppName(“HelloWorld”).setMaster(“spark://192.168.1.106:7077")
.set(“spark.eventLog.enabled”、“true”)
.set(“spark.eventLog.dir”file:///D:/SparkEventLogsHistory");
//.set(“spark.eventLog.dir”,“/work/”;
//尝试了上述多种组合,但都出现了错误。
JavaSparkContext ctx=新的JavaSparkContext(sparkConf);
字符串[]arr=新字符串[]{“约翰”、“保罗”、“加文”、“拉胡尔”、“天使”};
List-inputList=Arrays.asList(arr);
JavaRDD inputdd=ctx.parallelize(inputList);
inpurdd.foreach(新的VoidFunction(){
公共void调用(字符串输入)引发异常{
系统输出打印项次(输入);
}
});
}
}
我得到的例外是:

Exception in thread "main" java.io.IOException: Cannot run program    "cygpath": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:206)
at org.apache.hadoop.util.Shell.run(Shell.java:188)
at org.apache.hadoop.fs.FileUtil$CygPathCommand.<init>(FileUtil.java:412)
at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:438)
at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:465)
at org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:592)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:584)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:420)
at org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:130)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:541)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61)
at com.java.spark.HelloWorld.main(HelloWorld.java:28)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 13 more
线程“main”java.io.IOException中的异常:无法运行程序“cygpath”:CreateProcess error=2,系统找不到指定的文件 位于java.lang.ProcessBuilder.start(未知源) 位于org.apache.hadoop.util.Shell.runCommand(Shell.java:206) 位于org.apache.hadoop.util.Shell.run(Shell.java:188) 位于org.apache.hadoop.fs.FileUtil$CygPathCommand。(FileUtil.java:412) 位于org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:438) 位于org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:465) 位于org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:592) 位于org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:584) 位于org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:420) 位于org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:130) 位于org.apache.spark.SparkContext(SparkContext.scala:541) 位于org.apache.spark.api.java.JavaSparkContext(JavaSparkContext.scala:61) 位于com.java.spark.HelloWorld.main(HelloWorld.java:28) 原因:java.io.IOException:CreateProcess error=2,系统找不到指定的文件 在java.lang.ProcessImpl.create(本机方法) 位于java.lang.ProcessImpl。(未知源) 位于java.lang.ProcessImpl.start(未知源) ... 还有13个 16/04/01 20:13:24信息关闭挂钩管理器:已调用关闭挂钩

是否有人知道如何解决此异常,以便Spark可以从本地目录中拾取事件日志

如果我没有给出configure eventLog.dir,则异常更改为:

Exception in thread "main" java.io.FileNotFoundException: File file:/H:/tmp/spark-events does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:468)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:373)
at org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:100)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:541)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61)
at com.java.spark.HelloWorld.main(HelloWorld.java:28)
线程“main”java.io.FileNotFoundException:File:/H:/tmp/spark事件中的异常不存在 位于org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:468) 位于org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:373) 位于org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:100) 位于org.apache.spark.SparkContext(SparkContext.scala:541) 位于org.apache.spark.api.java.JavaSparkContext(JavaSparkContext.scala:61) 位于com.java.spark.HelloWorld.main(HelloWorld.java:28)
在运行spark应用程序之前,您应该验证hadoop是否在windows上正确配置。查看此链接了解如何在windows上配置hadoop:我提到我还没有安装hadoop。Spark不需要安装Hadoop。我在windows上以本地模式运行Spark,运行良好。