分享

spark-streaming 的 transform 方法

jsh0401 2018-5-30 18:09:46 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 7264

Stream-dataset joins

这在种操作在前面解释DStream.transform操作时已经进行了展示。下面的例子是另一个join窗口流与数据集的例子。

[java] view plain copy



  • val dataset: RDD[String, String] = ...  
  • val windowedStream = stream.window(Seconds(20))...  
  • val joinedStream = windowedStream.transform { rdd => rdd.join(dataset) }  


实际上,您也可以动态更改用于join操作的数据集。提供给transform的函数参数在每个批次间隔都会被evaluated,因此将使用当前dataset指向的数据集。




请问怎么传入 “动态改变的dataset” ,比如这个dataset是mysql查询得到的,mysql数据会改变,定时的去查询mysql得到的最新的动态的dataset


已有(5)人评论

跳转到指定楼层
einhep 发表于 2018-5-30 19:38:06
本帖最后由 einhep 于 2018-5-30 19:40 编辑

没明白想说啥啊。
是说窗口数据是变动的吗?
这个是spark streaming内部机制,阅读源码即可。窗口开始后,会去读取封装的数据。
窗口是自动滑动的。
回复

使用道具 举报

jsh0401 发表于 2018-5-30 19:48:00
einhep 发表于 2018-5-30 19:38
没明白想说啥啊。
是说窗口数据是变动的吗?
这个是spark streaming内部机制,阅读源码即可。窗口开始后 ...

跟窗口没关系,我是问在streaming的transform方法里rdd的join操作,streaming里的rdd跟外面driver传进去的固定的rdd join可以,如果外面的rdd是变化的,怎么传进去?
回复

使用道具 举报

einhep 发表于 2018-5-30 19:54:47
jsh0401 发表于 2018-5-30 19:48
跟窗口没关系,我是问在streaming的transform方法里rdd的join操作,streaming里的rdd跟外面driver传进去 ...

不知道场景,目前只能是就问题解决问题。
既然是变化的,那就多调用几次或则多join几次啊。
比如rdd为1的时候,传进去join
rdd为2的时候,传进去join。
你想rdd传进去后,还变化,这个怎么能行啊,join的时候,数据忽然变化了,那不崩溃了吗
回复

使用道具 举报

jsh0401 发表于 2018-5-31 14:07:08
einhep 发表于 2018-5-30 19:54
不知道场景,目前只能是就问题解决问题。
既然是变化的,那就多调用几次或则多join几次啊。
比如rdd为1 ...

场景是比如经典的过滤垃圾邮件,垃圾邮件可能今天是5个,明天又加入新的5个也作为垃圾邮件,streaming启动起来后是一直运行的,你怎么join定期更新的dataset, 除非streaming重启,才能join新的dataset,我是看这对官网上的翻译说dataset是可以动态更新的,所以产生了疑问
回复

使用道具 举报

desehawk 发表于 2018-5-31 17:54:27
jsh0401 发表于 2018-5-31 14:07
场景是比如经典的过滤垃圾邮件,垃圾邮件可能今天是5个,明天又加入新的5个也作为垃圾邮件,streaming启 ...

这个是谁join谁join的原因是什么?
其实spark streaming对于每次增加的会封装成一个小的rdd流,这个单个操作的,前后数据流是连续的,但是他们的操作是可以不连续的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条