Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java1.8中使用Spark执行WordCount示例时出现与迭代器相关的错误_Java_Apache Spark - Fatal编程技术网

在Java1.8中使用Spark执行WordCount示例时出现与迭代器相关的错误

在Java1.8中使用Spark执行WordCount示例时出现与迭代器相关的错误,java,apache-spark,Java,Apache Spark,当我复制并粘贴ApacheSpark主页中的WordCount示例时,出现了以下错误。(我对lambda表达式使用了Java1.8) javapairdd countsk=input.flatMap(x->Arrays.asList(x.split(“”).iterator())//发生错误的位置。 .mapToPair(x->new Tuple2(x,1)) .reduceByKey((x,y)->x+y); 错误消息:不存在类型变量U的实例,因此迭代器符合Iterable。 在收到这个错误

当我复制并粘贴ApacheSpark主页中的WordCount示例时,出现了以下错误。(我对lambda表达式使用了Java1.8)

javapairdd countsk=input.flatMap(x->Arrays.asList(x.split(“”).iterator())//发生错误的位置。
.mapToPair(x->new Tuple2(x,1))
.reduceByKey((x,y)->x+y);
错误消息:不存在类型变量U的实例,因此迭代器符合Iterable。
在收到这个错误消息后,我修复了下面的代码,它工作得很好

 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);
javarddwords=input.flatMap(str->Arrays.asList(str.split(“”));
javapairrdpairs=words.mapToPair(str->newtuple2(str,1));
javapairdd counts=pairs.reduceByKey((a,b)->a+b);
然而,这对我来说有点奇怪,因为我只是复制并粘贴了ApacheSpark提供的代码。我为什么会犯这样的错误?如何解决上述问题


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

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

  • 在spark版本2中,需要在集合上发回迭代器

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

    因此,您的spark版本可能是1.6,因此出现了这个问题


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

  • 在spark版本2中,需要在集合上发回迭代器

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

    因此,您的spark版本可能是1.6,因此出现了这个问题


  • 您使用哪种Spark版本?您使用哪种Spark版本?
     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);