星火与Twitter流 - 没有输出流中注册,所以没有执行 [英] Spark Streaming with Twitter - No output streams registered, so nothing to execute

查看:818
本文介绍了星火与Twitter流 - 没有输出流中注册,所以没有执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图执行使用Twitter火花流的例子。这是我的code

 公共静态无效的主要(字符串..参数){
SparkConf的conf =新SparkConf()setAppName(Spark_Streaming_Twitter)setMaster(本地)。
        JavaSparkContext SC =新JavaSparkContext(CONF);
        JavaStreamingContext JSSC =新JavaStreamingContext(SC,新的持续时间(2));
        JavaSQLContext sqlCtx =新JavaSQLContext(SC);
        的String [] =过滤器新的String [] {足球};        JavaReceiverInputDStream<状态> receiverStream = TwitterUtils.createStream(JSSC,过滤器);         jssc.start();
         jssc.awaitTermination();}

但我发现了以下异常

 异常线程mainjava.lang.AssertionError:断言失败:注册无输出流,因此没有执行
    。在斯卡拉preDEF $ .assert(predef.scala:179)
    在org.apache.spark.streaming.DStreamGraph.validate(DStreamGraph.scala:158)
    在org.apache.spark.streaming.StreamingContext.validate(StreamingContext.scala:416)
    在org.apache.spark.streaming.StreamingContext.start(StreamingContext.scala:437)
    在org.apache.spark.streaming.api.java.JavaStreamingContext.start(JavaStreamingContext.scala:501)
    在org.learning.spark.TwitterStreamSpark.main(TwitterStreamSpark.java:53)

任何建议如何解决这个问题?


解决方案

  

当输出操作者被调用时,它触发的计算
  流。


而对DSTREAM输出操作符不计算被调用。基本上你需要调用任何下面的方法对数据流上

 打印()
foreachRDD(FUNC)
saveAsObjectFiles(preFIX,[后缀])
saveAsTextFiles(preFIX,[后缀])
saveAsHadoopFiles(preFIX,[后缀])

<一个href=\"http://spark.apache.org/docs/latest/streaming-programming-guide.html#output-operations\">http://spark.apache.org/docs/latest/streaming-programming-guide.html#output-operations

如果需要,您也可以先申请任何变换,然后输出功能了。

I'm trying to execute a spark streaming example using Twitter. This is my code

public static void main (String.. args) {


SparkConf conf = new SparkConf().setAppName("Spark_Streaming_Twitter").setMaster("local");
        JavaSparkContext sc = new JavaSparkContext(conf);       
        JavaStreamingContext jssc = new JavaStreamingContext(sc, new Duration(2));      
        JavaSQLContext sqlCtx = new JavaSQLContext(sc);     


        String[] filters = new String[] {"soccer"};

        JavaReceiverInputDStream<Status> receiverStream = TwitterUtils.createStream(jssc,filters);



         jssc.start();
         jssc.awaitTermination();

}

But I'm getting the following exception

Exception in thread "main" java.lang.AssertionError: assertion failed: No output streams registered, so nothing to execute
    at scala.Predef$.assert(Predef.scala:179)
    at org.apache.spark.streaming.DStreamGraph.validate(DStreamGraph.scala:158)
    at org.apache.spark.streaming.StreamingContext.validate(StreamingContext.scala:416)
    at org.apache.spark.streaming.StreamingContext.start(StreamingContext.scala:437)
    at org.apache.spark.streaming.api.java.JavaStreamingContext.start(JavaStreamingContext.scala:501)
    at org.learning.spark.TwitterStreamSpark.main(TwitterStreamSpark.java:53)

Any suggestion how to fix this issue?

解决方案

When an output operator is called, it triggers the computation of a stream.

Without output operator on DStream no computation is invoked. basically you will need to invoke any of below method on stream

print()
foreachRDD(func)
saveAsObjectFiles(prefix, [suffix])
saveAsTextFiles(prefix, [suffix])
saveAsHadoopFiles(prefix, [suffix])

http://spark.apache.org/docs/latest/streaming-programming-guide.html#output-operations

you can also first apply any transformations and then output functions too if required.

这篇关于星火与Twitter流 - 没有输出流中注册,所以没有执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆