【发布时间】:2016-01-18 14:25:34
【问题描述】:
我正在将来自 Kafka 的数据接收到 Spark Streaming 应用程序中。它采用 Transformed DStreams 的格式。然后我只保留我想要的功能。features=data.map(featurize)
这给了我 "name","age","whatever"。
然后我只想保留所有数据的名称features=data.map(featurize).map(lambda Names: Names["name"]
现在,当我打印此命令时,我得到了来自流应用程序的所有名称,但我想分别处理每个名称。
更具体地说,我想检查每个名称,如果我过去已经遇到过它,我想在它上面应用一个函数。否则我将继续我的申请。所以我希望每个名字都是一个字符串,这样我就可以将它插入到我的函数中,检查过去是否看到过一个字符串。
我知道 foreach 会给我每个 RDD ,但我仍然想分别处理 RDD 的每个名称。
pyspark 有什么办法吗?
【问题讨论】:
-
你试过updateStateByKey了吗,键是你的名字吗?
-
如何使用 updateStateByKey 来保留来自不同流窗口的名称?
-
您可以在这里找到有用的信息(找到 updateStateByKey 部分):spark.apache.org/docs/latest/streaming-programming-guide.html
标签: python pyspark spark-streaming rdd