我试图决定如何最好地设计一个涉及Spark Streaming的数据管道。
我想象的基本过程是:
让我困惑的第(4)步。我不确定如何优雅地关闭它。 Recommendations我发现通常似乎推荐" Ctrl-C"在驱动程序上,以及spark.streaming.stopGracefullyOnShutdown
配置设置
我不喜欢这种方法,因为它要求生产代码以某种方式访问消费者的驱动程序并向其发送信号。这两个系统可能完全不相关;这不一定容易做到。 另外,已经存在一个沟通渠道 - fileStream - 我不能使用它吗?
在传统的线程生产者/消费者情况下,一种常见的技术是使用" poison pill"。制作人发送一个特殊的数据表明"没有更多的数据",然后等待你的消费者退出。
有没有理由不能在Spark中完成?
当看到一些特殊数据时,流处理代码有一种方法可以将消息发送回其驱动程序吗?
Spark文档有an example监听套接字,socketTextStream
,并且它在某种程度上能够在生成器完成时终止。我还没有潜入那段代码,但这似乎应该是可能的。
有什么建议吗? 这基本上是错误的吗?