我正在尝试使用spark streaming运行网络字数统计工作。代码如下:
public class myclass {
public static Iterator<String> myfunc(String s){
String ar[]=s.split(" ");
List<String> l = new ArrayList<String>();
for(String a:ar){
l.add(a);
}
return l.iterator();
}
public static void main(String args[]) throws Exception{
SparkConf conf = new SparkConf().setAppName("trial");
JavaStreamingContext jssc = new JavaStreamingContext(conf,Durations.seconds(1));
JavaDStream<String> lines = jssc.socketTextStream("localhost", 7777);
JavaPairDStream<String,Integer> tup=lines.flatMap(s -> myfunc(s)).mapToPair(s -> new Tuple2<String,Integer>(s,1)).reduceByKey((a,b)-> a+b);
tup.print();
jssc.start();
jssc.awaitTermination();
jssc.stop();
jssc.close();
}
}
我使用以下命令运行此作业:
spark-submit --class myclass --master local <myjar.jar>
在另一个终端中,我运行了一个本地服务器:
nc -lk 7777
这项工作运行良好,但它一直在继续......
它每隔一毫秒不断添加新作业。我尝试在本地服务器上添加行,它显示没有任何错误,但仍然工作继续和开放&amp;输出显示。
我浏览了一些使用相同代码的在线教程,代码的结果定期显示如下:
time 14500000ms
__________________
<output>
但在我的情况下并没有发生这种情况,它继续增加以下工作:
Added jobs for time 1450000
Added jobs for time 1460000
Added jobs for time 1470000
. . . .
. . . .
我做错了什么?