在Spark Streaming中使用count()作为整数

时间:2016-03-22 15:08:47

标签: java apache-spark spark-streaming

我是Spark Streaming的新手,我正在做一个非常简单的Java程序,它执行以下操作:

我以字符串格式(values5变量)收到一系列数字,每秒5次,将它们转换为整数,然后再次返回数字。这是我使用的代码:

JavaDStream<Integer> numbers = values5.map(new Function<String, Integer>() {
@Override
public Integer call(String s) throws Exception { 

 int c = Integer.parseInt(s);
 return c;
}
}
);
numbers.print();

(我的RDD计数或values5.count()在预期的大部分时间返回5,因为批处理持续时间为1秒,而我每秒得到5个数字。

现在的问题是,如果我的values5.count()为5或更多,我只想打印数字&#39;也就是说,做这样的事情:

   JavaDStream<Integer> numbers = values5.map(new Function<String, Integer>() {
    @Override
    public Integer call(String s) throws Exception { 

 int c = Integer.parseInt(s);

if(values5.count()<5) {
     return 0;
}
else{
return c;
}
}
}
);
numbers.print();

但它不起作用,因为numbers.count()是一个JavaDstream,我不能将它与java.lang.Integer或int进行比较。

我该怎么办?非常感谢你。

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找的内容会在this mailing list post

中讨论

您需要对代表的RDD采取行动:

public GlobalKeyListenerExample(){
    a = new A();
    a.setVisible(true);
}

dstream.foreachRDD { rdd =>  val count = rdd.count() }