一、描述

在书中第二章,有一个例子,构建完之后,运行:

${SPARK_HOME}/bin/spark-submit --class com.oreilly.learningsparkexamples.mini.java.WordCount ./target/learning-spark-mini-example-0.0.1.jar ./README.md ./wordcouts

如果用的spark版本与书中用到的不一样的话,就会出现各种问题,譬如书中用的是1.2.0而我用的是最新的2.3.0。

二、问题及解决

1. 第一次编译的时候,出现类似下面的报错:

ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.AbstractMethodError: com.oreilly.learningsparkexamples.mini.java.WordCount$1.call(Ljava/lang/Object;)Ljava/util/Iterator;
....

首先是解决版本依赖的问题:

(1)获得spark-core的版本和spark的版本,通过查看以下路径获得:

${SPARK_HOME}/jars/spark-core_x.xx-y.y.y.jar

(2)修改mini-complete-example目录下的pom.xml,把刚才查看到的版本号替换原来的:

<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_x.xx</artifactId>
<version>y.y.y</version>
<scope>provided</scope>
</dependency>

重新编译。

2. 第二次编译估计会遇到下面的报错:

Java FlatMapFunction in Spark: error: is not abstract and does not override abstract method call(String) in FlatMapFunction
......

定位到出错的句子:

JavaRDD<String> words = input.flatMap(
new FlatMapFunction<String, String>() {
public Iterable<String> call(String x) {
return Arrays.asList(x.split(" "));
}});

又查了一下书里关于FlatMapFunction<T, R>()接口的继承规则,没发现错误,转念一下,可能又是版本不一样造成的。查了一下最新版本的api,发现需要实现的方法的返回类型变了:

java.util.Iterator<R>    call(T t)

是一个Iterator<R>而不是Iterable<R>,对症下药:

(1)导入Iterator包:

import java.util.Iterator;

(2)把出错的句子修改成:

JavaRDD<String> words = input.flatMap(
new FlatMapFunction<String, String>() {
@Override public Iterator<String> call(String x) {
return Arrays.asList(x.split(" ")).iterator();
}});

重新编译,打包:

mvn compile && mvn package

然后再运行,问题解决

三、参考

1. Apache Spark: ERROR Executor –> Iterator

2. Java FlatMapFunction in Spark: error: is not abstract and does not override abstract method call(String) in FlatMapFunction

3. Spark Api

(完)

最新文章

  1. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
  2. 调用altera IP核的仿真流程—上
  3. XCod5 SVN
  4. Codeforces Round #381(div 2)
  5. Mysql 创建用户 授权
  6. C# File
  7. BW知识点总结及面试要点
  8. wxwidgets demo
  9. Longest Substring Without Repeating Characters 最长不重复子串
  10. ios的自动转屏
  11. 基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
  12. Asp.net mvc 中的路由
  13. MSSQL 复制数据 并随机打乱写入
  14. mybatis中设置打印sql语句application.yml
  15. 仿XP系统的任务栏菜单
  16. cut命令详解
  17. STL进阶--删除元素
  18. Spring是什么、spring容器、Spring三大核心思想DI(依赖注入)、IOC(控制反转)、AOP(面向切面编程)
  19. php单双引号嵌套解决方案
  20. python获取文件

热门文章

  1. 关于ng的过滤器的详细解释angular-filter
  2. jeecg中service中注入jdbc的注解
  3. javascript正则表达式定义(语法)
  4. erlang入门之编译和运行
  5. Netty--TCP粘包和拆包
  6. *.app 无法打开或已损坏解决办法
  7. Linux 设备总线驱动模型
  8. 【Java】编程
  9. c++ 字符输入读取
  10. GPRS 通信