相关疑难解决方法(0)

java.lang.ClassCastException使用远程服务器上的spark作业中的lambda表达式

我正在尝试使用sparkjava.com框架为我的apache spark作业构建一个web api.我的代码是:

@Override
public void init() {
    get("/hello",
            (req, res) -> {
                String sourcePath = "hdfs://spark:54310/input/*";

                SparkConf conf = new SparkConf().setAppName("LineCount");
                conf.setJars(new String[] { "/home/sam/resin-4.0.42/webapps/test.war" });
                File configFile = new File("config.properties");

                String sparkURI = "spark://hamrah:7077";

                conf.setMaster(sparkURI);
                conf.set("spark.driver.allowMultipleContexts", "true");
                JavaSparkContext sc = new JavaSparkContext(conf);

                @SuppressWarnings("resource")
                JavaRDD<String> log = sc.textFile(sourcePath);

                JavaRDD<String> lines = log.filter(x -> {
                    return true;
                });

                return lines.count();
            });
}
Run Code Online (Sandbox Code Playgroud)

如果我删除lambda表达式或将其放在一个简单的jar而不是web服务(不知何故是一个servlet)中,它将运行而没有任何错误.但是在servlet中使用lambda表达式将导致此异常:

15/01/28 10:36:33 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, hamrah): java.lang.ClassCastException: cannot assign instance …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 spark-java

22
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1

spark-java ×1