gpt4 book ai didi

java - 当我在 Java 1.8 中使用 Spark 执行 WordCount 示例时出现与迭代器相关的错误

转载 作者:行者123 更新时间:2023-12-02 02:02:57 27 4
gpt4 key购买 nike

当我复制并粘贴 apache Spark 主页中的 WordCount 示例时,出现以下错误。 (我使用Java 1.8作为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 提供的代码。为什么我会收到这样的错误以及如何解决上述问题?

我认为flatMap返回迭代器类型。从这个角度来看,我认为给出错误消息的第一个代码比下面的代码更准确。我有点困惑。

最佳答案

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

  1. 在 Spark 版本 2 中,需要您发回集合上的迭代器

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

    因此,您的 Spark 版本可能是 1.6,因此会出现此问题。

关于java - 当我在 Java 1.8 中使用 Spark 执行 WordCount 示例时出现与迭代器相关的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51284678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com