【发布时间】:2016-06-12 21:26:33
【问题描述】:
我正在使用 Spark 的 Streaming API,我只是想更好地了解如何最好地设计代码。
我目前正在使用来自 pyspark.streaming.kafka.createDirectStream 的 Kafka Consumer(在 pyspark 中)
根据http://spark.apache.org/docs/latest/streaming-programming-guide.html
Spark Streaming 提供称为离散化的高级抽象 stream 或 DStream,表示连续的数据流。 DStreams 可以从源的输入数据流创建 例如 Kafka、Flume 和 Kinesis,或者通过应用高级 其他 DStream 上的操作。在内部,一个 DStream 表示为 一系列 RDD。
本质上,我想将一组函数应用于 DStream 中的每个元素。目前,我正在使用 pyspark.streaming.DStream 的“地图”功能。根据文档,我的方法似乎是正确的。 http://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.DStream
map(f, preservesPartitioning=False) 通过应用 a 返回一个新的 DStream DStream 的每个元素的函数。
我应该使用地图,还是正确的方法是将函数/转换应用于 RDD(因为 DStream 使用 RDD)??
foreachRDD(func) 对这个 DStream 中的每个 RDD 应用一个函数。
更多文档: http://spark.apache.org/docs/latest/api/python/pyspark.streaming.html
【问题讨论】:
标签: apache-spark pyspark apache-kafka spark-streaming