当前位置: 首页 > 知识库问答 >
问题:

当我在Java1.8中使用Spark执行WordCount示例时,与迭代器相关的错误[duplicate]

柏明亮
2023-03-14

当我复制并粘贴apache spark主页中的WordCount示例时,我得到了以下错误。(我使用Java1.8 for lambda表达式)

JavaPairRDD<String, Integer> countsk = input.flatMap(x -> Arrays.asList(x.split(" ")).iterator())  //where error occurred.
                .mapToPair(x -> new Tuple2<>(x, 1))
                .reduceByKey((x, y) -> x + y);

Error message : no instances of type variable(s) U exist so that iterator<String> conforms to Iterable<U>.

在得到这个错误消息后,我修复了代码如下,它确实工作良好。

 JavaRDD<String> words = input.flatMap(str -> Arrays.asList(str.split(" ")));
        JavaPairRDD<String, Integer> pairs = words.mapToPair(str -> new Tuple2<>(str, 1));
        JavaPairRDD<String, Integer> counts = pairs.reduceByKey((a, b) -> a + b);

但是,这对我来说有点奇怪,因为我只是复制并粘贴了apache Spark提供的代码。为什么我会出现这样的错误,以及如何解决上述问题?

共有1个答案

微生昌勋
2023-03-14

事实上,在使用flatMap和flatMapToPair时,输出会根据使用的spark版本而有所不同:

>

  • 在spark Version2中,它需要在集合上返回一个迭代器

    而不是在版本2下的spark中使用的集合。

  •  类似资料:
    • 问题内容: 我已经升级了系统,并为正在使用的Web应用程序安装了带有PHP的MySql 5.7.9。我有一个动态创建的查询,当在旧版本的MySql中运行时,它运行良好。自升级到5.7以来,出现此错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’support_desk.mod_users_groups.group_id’,该列在功能上不依赖于GROUP BY子句中

    • 问题内容: 我已经升级了系统,并为正在使用的Web应用程序安装了带有PHP的MySql 5.7.9。我有一个动态创建的查询,当在旧版本的MySql中运行时,它运行良好。自升级到5.7以来,出现此错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’support_desk.mod_users_groups.group_id’,该列在功能上不依赖于GROUP BY子句中

    • 我已经升级了我的系统,并为我正在处理的一个web应用程序安装了带有php的MySQL5.7.9。我有一个动态创建的查询,当运行在旧版本的MySql中时,它可以正常工作。自从升级到5.7后,我遇到以下错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'SUPPORT_DESK.MOD_USERS_GROUPS.GROUP_ID',该列在功能上不依赖于GROUP BY子句

    • 我正在尝试运行WordCount Map/Reduce作业的示例代码。我正在Hadoop1.2.1上运行它。我用我的日食来运行它。下面是我尝试运行的代码: 13/11/04 13:27:53 INFO Mapred.JobClient:任务Id:Attitt_201310311611_0005_M_000000_0,状态:失败java.lang.RuntimeException:java.lang

    • 我试图在Hadoop 1.0.4和Ubuntu 12.04上用C++运行wordcount示例,但我得到以下错误: 错误消息: 13/06/14 13:50:11警告Mapred.JobClient:未设置作业jar文件。可能找不到用户类。请参阅JobConf(Class)或JobConf#setjar(String)。13/06/14 13:50:11 INFO util.NativEcodeL

    • 我正在使用gatling来运行负载测试。我不是gatling或scala专家,但在我看来,这个特定的问题可能更多地与scala(和Akka)相关,而不是与gatling本身相关。我将从最后开始:当在不太强大的机器上高负载运行时,我偶尔会得到这样的错误: 其中[some collection]是我试图循环遍历的集合。当许多并发线程试图访问以这种方式定义的迭代器时,它是否偶尔会失败?有没有更好的方法创