如何在 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实现近实时的会话连接