Spark Streaming REST 自定义接收器

Posted

技术标签:

【中文标题】Spark Streaming REST 自定义接收器【英文标题】:Spark Streaming REST Custom Receiver 【发布时间】:2016-11-10 12:11:14 【问题描述】:

是否可以在 Spark Streaming 的自定义接收器中使用 REST API?

我正在尝试能够从该 API 异步执行多个调用/读取,并使用 Spark Streaming 来执行此操作。

【问题讨论】:

【参考方案1】:

自定义接收器可以是任何异步生成数据的进程。通常,您的 def receive() 方法会将异步请求发送到您的 REST 服务器,可能使用 Futures 和专用的 ThreadPoolonCompletion 未来,我们调用 store(data) 方法将结果提供给 Spark Streaming 作业。 简而言之,

def onStart() => 创建管理异步请求响应处理的进程 def receive() => 不断做 I/O 并通过调用 store(...) 报告结果 def onStop() => 停止进程并清理 onStart 创建的内容。

custom receivers docs 中有一个例子。

【讨论】:

谢谢!我正在考虑使用一些外部实现(正在研究 Flume)首先将数据导入 Kafka 之类的东西,然后使用 Kafka 作为我的 Spark Streaming 应用程序的源,但似乎我可以让它正常工作。

以上是关于Spark Streaming REST 自定义接收器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用spark streaming接收kafka中发送的自定义对象

使用自定义接收器从数据集中接收流数据 [Spark Streaming]

Spark Streaming:使用带有列修剪的 MicroBatchReader 的模式不匹配

Spark Streaming 预写日志在重启后不重播数据

将 RDD 转换为 DataFrame Spark Streaming 时的 ClassCastException

Spark Streaming源码解读之No Receivers详解