Spark Streaming - 毒药丸?

时间:2017-08-01 18:01:33

标签: apache-spark spark-streaming

我试图决定如何最好地设计一个涉及Spark Streaming的数据管道。

我想象的基本过程是:

  1. 设置一个观看fileStream(这是消费者)
  2. 的流媒体作业
  3. 在其他地方做一堆计算,填充该文件(这是生产者)
  4. 流式传输作业在进入时会消耗数据,执行各种操作
  5. 制作完成后,等待所有流式计算完成,然后拆除流媒体作业。
  6. 让我困惑的第(4)步。我不确定如何优雅地关闭它。 Recommendations我发现通常似乎推荐" Ctrl-C"在驱动程序上,以及spark.streaming.stopGracefullyOnShutdown配置设置

    我不喜欢这种方法,因为它要求生产代码以某种方式访问​​消费者的驱动程序并向其发送信号。这两个系统可能完全不相关;这不一定容易做到。 另外,已经存在一个沟通渠道 - fileStream - 我不能使用它吗?

    在传统的线程生产者/消费者情况下,一种常见的技术是使用" poison pill"。制作人发送一个特殊的数据表明"没有更多的数据",然后等待你的消费者退出。

    有没有理由不能在Spark中完成?

    当看到一些特殊数据时,流处理代码有一种方法可以将消息发送回其驱动程序吗?

    Spark文档有an example监听套接字,socketTextStream,并且它在某种程度上能够在生成器完成时终止。我还没有潜入那段代码,但这似乎应该是可能的。

    有什么建议吗? 这基本上是错误的吗?

0 个答案:

没有答案