当以编程方式调用streamingcontext.stop()时,Spark流会挂起

时间:2016-11-29 21:23:39

标签: java hadoop apache-spark spark-streaming yarn

我正在尝试使用文件监视器条件优雅地停止在纱线群集模式下运行的火花流应用程序。我还设置了条件

sparkConf.set("spark.streaming.stopGracefullyOnShutdown", "true");

当我在yarn-client模式下运行应用程序并发出SIGTERM以正常终止应用程序时,它工作正常。当我转换到纱线群集模式并且我无法访问驱动程序机器以发出SIGTERM时出现问题,因此我使用以下逻辑[ssc.stop()]以编程方式关闭应用程序。观察到的行为是Streamingcontext停止并且应用程序挂起而不处理待处理的微批次。我在这里遗漏了一些东西以干净的方式关闭应用程序。

        Dstream.foreachRDD(new VoidFunction<JavaRDD<String>>() {

            private static final long serialVersionUID = 1239370L;

            @Override
            public void call(JavaRDD<String> inRDD) throws Exception {
            try
            {
                 outRDD = applyTransformation(inRDD)  
                 storeToFs(outRDD)  
            }
            finally
            {
                if(!checkFileExists())
               {
                ssc.stop()
               }
           }
           }

           ssc.start()
           ssc.awaitTermination()

0 个答案:

没有答案