使用foreach方法保存offset相关信息时,offset相关信息必须作为groupby参数传递,统计结果表不能聚合
来源:9-9 调优及作业

qq_梦也_1
2020-10-28
pk哥你好,
期望的结果如下:
①统计结果表含有 日期,省份,数量 3列
②offset单独保存到redis中。
按照视频中老师的讲解,试着保存offset信息。
grouby(日期,省份,数量)
使用foreach方法,将offset保存的redis过程中,ForeachWriter的process(value: Row)方法中的value只能获取到grouby的3个参数列。如果获取offset相关信息,需要把topic,partition,offset 作为参数传入到grouby中,即grouby(日期,省份,数量,topic,partition,offset),这样就导致统计结果不能按日期,省份聚合了。我试了一下,foreach方式好像不支持多个sink(本想在grouby(日期,省份,数量) 之前用1个writeStream输出offset信息,再用1个writeStream输出统计结果信息,但编译时就报错了)。所以想问下老师,offset相关的信息,是否能不作为grouby的参数,传到ForeachWriter的process(value: Row)方法中的? 或是此处需要使用ForeachBatch方法来实现?希望老师指点一下。
2回答
-
夜愿小夜
2022-01-14
同学这个问题解决了嘛,同样问题碰到了!
012022-01-14 -
Michael_PK
2020-10-28
不太对啊,offset没有聚合一说的。总体的思路是,offset获得之后和业务结果都要进行存储。两者要么是事务性的,要么结果是幂等性才能保证结果正确性
0122020-10-28
相似问题
回答 1
回答 1