首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花流DStream元素与RDD

火花流DStream元素与RDD
EN

Stack Overflow用户
提问于 2016-02-29 18:01:52
回答 1查看 1.6K关注 0票数 0

我正在使用Spark的流API,我只是想更好地了解如何最好地设计代码。

我目前正在使用pyspark.streaming.kafka.createDirectStream的卡夫卡消费者(用火药厂)

根据http://spark.apache.org/docs/latest/streaming-programming-guide.html

火花流提供了一种称为离散流或DStream的高级抽象,它表示连续的数据流。DStreams可以从卡夫卡、弗卢姆和动态等源的输入数据流中创建,也可以通过在其他DStreams上应用高级操作来创建。在内部,DStream被表示为RDDs的序列。

本质上,我希望将一组函数应用于DStream中的每个元素。目前,我正在为pyspark.streaming.DStream使用"map“函数。根据文件,我的方法似乎是正确的。http://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.DStream

map(f,preservesPartitioning=False)通过向DStream的每个元素应用一个函数来返回一个新的DStream。

我应该使用map,还是正确的方法是将函数/转换应用于RDDs (因为DStream使用RDD)?

foreachRDD(func)向这个DStream中的每个RDD应用一个函数。

更多文档:http://spark.apache.org/docs/latest/api/python/pyspark.streaming.html

EN

回答 1

Stack Overflow用户

发布于 2016-02-29 18:45:56

DirectStream.map是一个正确的选择。跟随map

代码语言:javascript
复制
stream.map(f)

相当于:

代码语言:javascript
复制
stream.transform(lambda rdd: rdd.map(f))

另一方面,DirectStream.foreachRDD是一个输出操作,并创建一个输出DStream。与foreachRDD一起使用的函数不需要返回任何内容,与方法本身一样。很明显,当查看Scala签名时:

代码语言:javascript
复制
def foreachRDD(foreachFunc: RDD[T] => Unit): Unit
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35706350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档