分享

sparkStreaming 窗口函数问题

wangzhenqiang 发表于 2016-11-6 09:57:52 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 8543
  XXX.reduceByKeyAndWindow((srcMid1: List[String], srcMid2: List[String]) => srcMid1 ::: srcMid2, Seconds(120), Seconds(1))
.filter(_._2.length >= 1)
.foreachRDD(rdd => {
        if (!rdd.partitions.isEmpty) {
          val arrayjsn = rdd.collect()
          if(arrayjsn.length >0)
            {
              println("------------array length----------------"+arrayjsn.length)
            }}
            }

我的数据来自kafka,当我输入一条满足条件的数据时,foreachRDD中的内容会输出120条数据,为什么会这样,我的窗口用的有问题吗,请求帮助

已有(5)人评论

跳转到指定楼层
nextuser 发表于 2016-11-6 10:35:51
Seconds(120)修改下这个参数,看是否有变化
回复

使用道具 举报

wangzhenqiang 发表于 2016-11-6 19:48:00
nextuser 发表于 2016-11-6 10:35
Seconds(120)修改下这个参数,看是否有变化

修改成180,就变成180条

回复

使用道具 举报

nextuser 发表于 2016-11-6 20:12:12
wangzhenqiang 发表于 2016-11-6 19:48
修改成180,就变成180条

关键是弄清窗口函数的定义,还有时间差。
弄清楚了,楼主就明白了。
今天有点累,楼主可以自己找找。
回复

使用道具 举报

wangzhenqiang 发表于 2016-11-6 20:29:52
nextuser 发表于 2016-11-6 20:12
关键是弄清窗口函数的定义,还有时间差。
弄清楚了,楼主就明白了。
今天有点累,楼主可以自己找找。

多谢,好的
回复

使用道具 举报

einhep 发表于 2016-11-7 18:38:16

窗口函数的含义是:
每隔1秒,计算最近120秒的数据。楼主根据这个可以进行调整参数
还有跟批处理时间应该也有关系

  val ssc = new StreamingContext(sc, Seconds(5))

调整好,这三个参数,就能控制输出了还有
时间间隔与时间长度必须是批处理时间的倍数




回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条