首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在结构化流中终止dropDuplicates状态以避免OOM?

如何在结构化流中终止dropDuplicates状态以避免OOM?
EN

Stack Overflow用户
提问于 2017-08-03 03:27:12
回答 3查看 2.5K关注 0票数 6

我希望使用星火结构化流计算每天的唯一访问,因此我使用以下代码

代码语言:javascript
复制
.dropDuplicates("uuid")

在第二天,维护今天的状态应该取消,这样我就可以得到第二天唯一访问的正确计数,并避免OOM。星星之火文档使用带有水印的dropDuplicates来指示,例如:

代码语言:javascript
复制
.withWatermark("timestamp", "1 day")
.dropDuplicates("uuid", "timestamp")

但是水印列必须在dropDuplicates中指定。在这种情况下,uuid和时间戳将被用作使用相同的uuid和时间戳去重复元素的组合键,这与我所期望的不一样。

那么有一个完美的解决方案吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-07 09:31:19

经过几天的努力,我终于找到了自己的方向。

在研究水印和dropDuplicates的源代码时,我发现除了eventTime列之外,水印还支持窗口列,因此我们可以使用以下代码:

代码语言:javascript
复制
.select(
    window($"timestamp", "1 day"),
    $"timestamp",
    $"uuid"
  )
.withWatermark("window", "1 day")
.dropDuplicates("uuid", "window")

因为同一天中的所有事件都有相同的窗口,这将产生与仅使用uuid去重复相同的结果。希望能帮助一个人。

票数 11
EN

Stack Overflow用户

发布于 2018-11-14 21:07:45

下面是火花文件中提议的程序的修改。技巧是操纵事件时间,即将事件时间放入桶中。假设事件时间以毫秒为单位。

代码语言:javascript
复制
// removes all duplicates that are in 15 minutes tumbling window.
// doesn't remove duplicates that are in different 15 minutes windows !!!!
public static Dataset<Row> removeDuplicates(Dataset<Row> df) {
    // converts time in 15 minute buckets
    // timestamp - (timestamp % (15 * 60))
    Column bucketCol = functions.to_timestamp(
            col("event_time").divide(1000).minus((col("event_time").divide(1000)).mod(15*60)));
    df = df.withColumn("bucket", bucketCol);

    String windowDuration = "15 minutes";
    df = df.withWatermark("bucket", windowDuration)
            .dropDuplicates("uuid", "bucket");

    return df.drop("bucket");
}
票数 0
EN

Stack Overflow用户

发布于 2018-11-18 02:58:54

我发现窗口函数不起作用,所以我选择使用window.start或window.end。

代码语言:javascript
复制
.select(
   window($"timestamp", "1 day").start,
   $"timestamp",
   $"uuid"
)
.withWatermark("window", "1 day")
.dropDuplicates("uuid", "window")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45474270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档