学习 Spark Streaming

Posted

技术标签:

【中文标题】学习 Spark Streaming【英文标题】:Learning Spark Streaming 【发布时间】:2017-08-04 04:24:49 【问题描述】:

我正在使用“学习火花流”一书来学习火花流。在这本书中,我在讨论 Dstream、RDD、块/分区的部分中找到了以下内容。

最后,在此架构中忽略的一个重要点是 Receiver 接口还可以选择连接到提供数据片段集合(想想数组)的数据源。例如,这在某些反序列化用途中尤为重要。在这种情况下,Receiver 不会通过块间隔等待来处理将数据分割成分区,而是认为整个集合反映了数据分割成块,并为集合的每个元素创建一个块。此操作对数据生产者的部分要求很高,因为它要求它以块间隔与批次间隔的比率生产块以可靠地运行(在每个批次上交付正确数量的块)。但有些人发现它可以提供卓越的性能,提供一种能够快速使许多块可用于序列化的实现。

我一直在摸索,不能简单地理解作者在说什么,尽管我觉得我应该理解它。有人可以给我一些指示吗?

【问题讨论】:

【参考方案1】:

披露:我是这本书的合著者。

我们想表达的是,自定义接收器 API 有两种工作模式:一种是生产方一次发送一条消息,另一种是接收方可以一次发送多条消息(批量)。

在一次一条消息模式下,Spark 负责缓冲数据并将数据收集到块中以供进一步处理。 在批量模式下,缓冲和分组的负担在生产方,但在某些情况下可能更有效。

这反映在 API 中:

def store(dataBuffer: ArrayBuffer[T]): Unit
    Store an ArrayBuffer of received data as a data block into Spark's memory.

def store(dataItem: T): Unit
    Store a single item of received data to Spark's memory.

我同意您的观点,该段落令人费解,可能无法像我们希望的那样清楚地传达信息。我会注意改进它。

感谢您的反馈!

【讨论】:

谢谢你,我现在明白了。但是可以澄清什么是:“这在某些反序列化用途中特别相关”你能给出一个例如

以上是关于学习 Spark Streaming的主要内容,如果未能解决你的问题,请参考以下文章

Spark学习笔记—01 Spark集群的安装

学习笔记Spark—— Spark MLlib应用—— 机器学习简介Spark MLlib简介

学习笔记Spark—— Spark MLlib应用—— 机器学习简介Spark MLlib简介

手把手带你玩转Spark机器学习-使用Spark构建分类模型

Spark机器学习实战-使用Spark进行数据处理和数据转换

Spark大咖说:MLFlow和spark在机器学习方面的进展Project Hydrogen和spark在深度学习方面的进展