我是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进行比较。
我该怎么办?非常感谢你。
答案 0 :(得分:0)
我相信您正在寻找的内容会在this mailing list post
中讨论您需要对代表的RDD采取行动:
public GlobalKeyListenerExample(){
a = new A();
a.setVisible(true);
}
或
dstream.foreachRDD { rdd => val count = rdd.count() }