对于spark结构化流媒体,我们编写了一个自定义源读取器,从“自定义源”读取数据。为了编写它,我遵循了spark代码中“kafka自定义源代码”的示例。我们还需要将输出写入自定义位置。为此,我看到spark提供了“foreach”和“foreachbatch”(在spark2.3.0以后的版本中)。我发现使用其中任何一个都是一个非常简单的实现,而且乍一看,我觉得我的大多数定制sink实现需求都可以得到满足。
但当我在spark中查看Kafka代码时,我发现Kafka使用了“streamsinkprovider”(https://jaceklaskowski.gitbooks.io/spark-structured-streaming/content/spark-sql-streaming-streamsinkprovider.html)而不是使用“foreach”或“foreachbatch”。
现在我想知道使用这些选项的优缺点是什么(在性能/灵活性等方面)?一个比另一个好吗?有没有人对这两个选项中的任何一个有过工作经验?在实际用例中他们是如何工作的?
暂无答案!
目前还没有任何答案,快来回答吧!