我有一个spark流作业,它每5秒从Kafka读取一次,对传入的数据进行一些转换,然后写入文件系统。
这不一定是一个流媒体工作,实际上,我只想每天运行一次,将消息排放到文件系统中。不过,我不知道如何停止这项工作。
如果我将超时传递给streamingContext.awaittemination,它不会停止进程,它所做的一切都会导致进程在迭代流时产生错误(请参阅下面的错误)
我想做的最好的方法是什么
这是针对Python上的Spark 1.6的
编辑:
多亏了@marios,解决方案是:ssc.start()
ssc.awaitTermination(10)
ssc.stop()
在停止之前运行脚本10秒。
简化代码:conf = SparkConf().setAppName("Vehicle Data Consolidator").set('spark.files.overwrite','true')
sc = SparkContext(conf=conf)
ssc = StreamingContext(sc, 5)
stream = KafkaUtils.createStream(
ssc,
kafkaParams["zookeeper.connect"],
"vehicle-data-importer",
topicPartitions,
kafkaParams)
stream.saveAsTextFiles('stream-output/ka