如何在 Spark Streaming 中使用基于数据集的转换?

Posted

技术标签:

【中文标题】如何在 Spark Streaming 中使用基于数据集的转换?【英文标题】:How to use Dataset-based transformation in Spark Streaming? 【发布时间】:2017-01-20 18:55:19 【问题描述】:

我有一个批处理模式的 Spark 作业(使用数据集),它执行一些转换并将数据摄取到 NOSQL 中。

我从其他来源获取数据,这些数据在结构上与在批处理模式中接收到的相似,尽管频率非常高(分钟)。我可以将用于流式处理的批处理模式的代码使用吗?

我试图避免使用 2 份代码来处理类似的结构。

【问题讨论】:

请发布更多细节 - 你在做什么,一些代码示例和 Spark 版本。在 Spark 2.0 中,您拥有结构化流式处理,因此流式处理数据集已准备好使用 来自spark.apache.org/docs/latest/…:“结构化流在 Spark 2.1 中仍是 ALPHA,API 仍处于试验阶段。”我读作“不用于生产”/“知道但还没有使用”。 【参考方案1】:

您可以使用transform 流式操作符(如the scaladoc 中所述):

transform[U](transformFunc: (RDD[T]) ⇒ RDD[U])(implicit arg0: ClassTag[U]): DStream[U]

返回一个新的 DStream,其中每个 RDD 都是通过对 'this' DStream 的每个 RDD 应用一个函数来生成的。

【讨论】:

以上是关于如何在 Spark Streaming 中使用基于数据集的转换?的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming 基于 Direct API 优化与 Kafka 集成

Spark Streaming 基于 Direct API 优化与 Kafka 集成

怎样利用Spark Streaming和Hadoop实现近实时的会话连接

如何在 Spark-Streaming 的 DStream 中使用“for”循环进行转换和输出?

Spark Streaming读取Kafka数据两种方式

Spark Streaming vs. Structured Streaming