Apache Spark Streaming中的接收器

139 阅读2分钟

内容表

阅读时间: 2 分钟

接收器是Spark Streaming中的特殊对象。接收器的目标是消耗来自数据源的数据并将其转移到Spark。我们通过在不同的执行器上将流媒体上下文作为长期运行的任务来创建接收者。

我们可以通过扩展抽象类Receiver来建立接收者。要启动或停止接收器,有两个方法:-

onStart()

这个方法包含了所有重要的东西,如打开连接、创建线程等,用于读取文件。onStart()必须是非阻塞的。为了正确启动和停止接收器,我们通过使用一个新的线程来实现数据检索。否则,即使流媒体上下文超过了它的超时时间,也不会因为阻塞的onStart()方法而被停止。

onStop()

onStop(),分别用于,停止数据消耗。

我们使用一个新的线程来实现数据的检索,它将从onStart()方法开始。它将通过使用两个方法将数据从接收器移到Spark上下文中。

在spark中,有两种类型的接收者:-

  • 可靠的接收者
  • 不可靠的接收者

可靠的接收方

当我们收到数据并在Spark存储中成功复制时,这个接收器会确认数据源。在可靠接收器的情况下,数据是通过store(...) 方法发送的,该方法接收类似集合的对象(Iterator, ByteBuffer, 或ArrayBuffer)的参数。这是一个阻塞方法,只要Spark不通知接收方数据保存成功,它就不会返回。返回后,接收器可以确认数据接收的来源。

不可靠的接收方

在这种情况下,确认函不会被发送到源头。

一个不可靠的接收器使用store(...) 方法,接收单个对象的参数。这个方法不是阻塞的,但它不会立即发送数据给spark。取而代之的是,它将数据保存在内存中,并在积累了一定数量的项目后将其作为一个批次发送给spark。

有时接收器会失败,在这种情况下,我们可以通过restart(...) 方法重新启动接收器。我们不能立即重启。我们只能安排时间。

总结

这篇博客给出了关于从数据源消耗数据并将其发送到spark上下文的中间过程的信息,而接收器是实现这一过程的主要对象。所以这篇博客提供了关于不同类型的接收者和我们在接收者上实现的方法的信息。

分享Knol。

相关信息