Spark Streaming:Rdd.Count()没有返回有效数字

时间:2016-01-31 20:48:16

标签: java apache-spark spark-streaming

在我的应用程序中,我有两个包含一些数据的JavaDStream。我试图计算每个JavaDStream中的行数,但是我在日志中收到的结果不是数字,而是输出到日志的完全不同的对象。我在这做错了什么?

代码:

//map score result set to tweets
JavaDStream<Tuple5<Long, String, Float, Float, String>> result =
        scoredTweets.map(new ScoreTweetsFunction());

//get extra elements
JavaDStream<Tuple7<Long, String, String, String, String, String, String>> extra_elements =
        json.map(new GetExtraElements());

//join elements with score result
System.out.println("Number of Rows in extra elements RDD: " + extra_elements.count());
System.out.println("Number of Rows in result RDD: " + result.count());

日志输出:

Number of Rows in extra elements RDD: org.apache.spark.streaming.api.java.JavaDStream@73358a55
Number of Rows in result RDD: org.apache.spark.streaming.api.java.JavaDStream@242aa3b2

1 个答案:

答案 0 :(得分:3)

DStream不是RDD,而是连续且可能无限的RDD序列。因此,它无法计算,并且不是count方法的工作方式。

相反,它将现有流转换为另一个流,其中每个RDD

  

通过计算此DStream的每个RDD生成一个元素

如果您想对单个RDD执行某些操作,则应使用foreachRDD