微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark结构化流-按分组-leftouterjoin-带有水印的聚合始终为空

如何解决Spark结构化流-按分组-leftouterjoin-带有水印的聚合始终为空

我有2条带有水印的数据流,如下面的Give所示。我正在使用Spark结构化流式传输

Stream1->选择X。带watermark(); Stream2->从带有水印()的Y中选择Y

我正在尝试对产生结果的两个流进行联接操作

Stream1.join-> Stream2正在填充结果。 ->能够得到结果。

在同一数据帧上,如果执行聚合操作,结果似乎为空

Stream1.join-> Stream2正在填充结果。 ->能够获得结果>分组时->结果为空

我能够在delta上执行流程-我确实在delta层中加入并分组,然后在编写的下一个序列的顶部进行聚合,效果很好。

我的问题是,是否不可能对结构化流进行分组依据-左外部联接-带有水印的聚合。

示例代码段。

val joinedDS =  pxstyl00Deltastream.join(product_dimdeltaRead,expr(""" concat(pxstyl,pxssfx) = concat(Prod_Id,Prod_Sfx_Val)  AND  kafkaEventTS >= Lst_Upd_Tms_Tm AND    kafkaEventTS <= Lst_Upd_Tms_Tm +  interval 20 days """),"left_outer")
.withColumn("qtytemp",expr("""case when Prod_Strd_Cse_Qty=0 then pxinva else pxinva/Prod_Strd_Cse_Qty end""")).filter("pxtxtp in ('606','03') AND Prod_Wave_Proc_Typ_Val in ('FA')")

val groupDS = joinedDS.withWatermark("kafkaEventTS","30 seconds").groupBy($"pxdcr",$"pxtcr",$"pxuser",window($"kafkaEventTS","50 seconds")).agg(sum("qtytemp").as("QTY")).writeStream.format("console").outputMode("append").start()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。