gpt4 book ai didi

java - Spark Streaming Word Count 错误/语法

转载 作者:行者123 更新时间:2023-12-02 21:59:52 24 4
gpt4 key购买 nike

我指的是https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java并尝试构建 Spark wordcount 示例,但某些代码未在 Eclipse 中编译并显示以下错误。

引发错误的代码是:

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

编译错误:

The return type is incompatible with FlatMapFunction.call(String)



以下是详细信息:Spark 1.6.1、Java 1.7_67、Eclipse Kepler、CDH5.7
我曾尝试更改 JDK 版本并将所有 Hadoop Jars 添加为外部 Jar、Maven 依赖项,但此错误仍然存​​在。

最佳答案

根据JavaDoc of FlatmapFunction ,您应该返回 java.lang.Iterable<String> ,并且您返回 java.util.Iterator<String> .
由于 Iterator 没有实现 Iterable 接口(interface),因此代码将不兼容。幸运的是,List接口(interface)确实扩展了 Iterable界面,所以你所要做的就是:

  • 删除 .iterator()从您创建的列表末尾调用
  • 修复 call(String x) 的返回类型方法为 Iterable<String>

  • 这种从 Iterator 到 Iterable 的变化可能发生在最新版本的 Spark 中,并且该示例尚未更新。

    关于java - Spark Streaming Word Count 错误/语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37123267/

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