为什么启动StreamingContext失败并出现"IllegalArgumentException:要求失败:没有注册输出操作,所以无需执行"?

 jun_c 发布于 2023-01-06 18:30

我正在尝试使用Twitter作为源执行Spark Streaming示例,如下所示:

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 receiverStream = TwitterUtils.createStream(jssc,filters);



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

}

但我得到以下例外

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)

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

1 个回答
  • 调用输出运算符时,它会触发流的计算.

    如果没有DStream上的输出操作符,则不会调用任何计算.基本上你需要在流上调用以下任何方法

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

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

    您也可以先应用任何转换,然后根据需要输出函数.

    2023-01-06 18:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有