- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:我将问题放入 test project 详细解释我的意思
================================================== =====================
我有 Akka 源代码,可以继续从数据库表中读取,然后对某个键进行分组,然后减少它。然而,在我应用reduce函数后,数据似乎永远不会发送到sink,它将继续reduce,因为上游总是有数据到来。
我读了一些帖子,并尝试了 groupedWithin 和滑动,但它并不像我想象的那样工作,它只会将消息分组到较大的部分,但不会使上游暂停并发出到接收器。以下是Akka流2.5.2中的代码
源减少代码:
source = source
.groupedWithin(100, FiniteDuration.apply(1, TimeUnit.SECONDS))
.sliding(3, 1)
.mapConcat(i -> i)
.mapConcat(i -> i)
.groupBy(2000000, i -> i.getEntityName())
.map(i -> new Pair<>(i.getEntityName(), i))
.reduce((l, r) ->{ l.second().setAction(r.second().getAction() + l.second().getAction()); return l;})
.map(i -> i.second())
.mergeSubstreams();
接收器并运行:
Sink<Object, CompletionStage<Done>> sink =
Sink.foreach(i -> System.out.println(i))
final RunnableGraph<SourceQueueWithComplete<Object>> run = source.toMat(sink, Keep.left());
run.run(materIalizer);
我也尝试过 .takeWhile(predicated);我使用计时器来切换谓词值 true 和 false,但似乎只会将第一次切换为 false,当我切换回 true 时,它不会重新启动上游。
请帮助我提前致谢!
================================================== ==
更新
information about the type of elements
添加我想要的内容:我有类调用 SystemCodeTracking
包含 2 个属性 (id,entityName)
我将有对象列表:(1, "table1"), (2, "table2"), (3, "table3"),(4, "table1"),(5, "table3"”)
我想对entityName进行分组,然后对id进行求和,因此,我希望看到的结果如下
("table1" 1+4),("table3", 3+5),("table2", 2)
我现在正在做的代码如下
source
.groupBy(2000000, systemCodeTracking -> systemCodeTracking.getEntityName)
.map(systemCodeTracking -> new Pair<String, Integer>(systemCodeTracking.getEntityName, SystemCodeTracking.getId()))
.scan(....)
我现在的问题更多是关于如何构建扫描初始状态我应该做什么?
scan(new Pair<>("", 0), (first, second) -> first.setId(first.getId() + second.getId()))
最佳答案
所以,如果我理解一切的话,你想要的是:
systemCodeTracking.getId()
对于第一部分,您需要groupBy
。对于第二部分groupedWithin
。但是,它们的工作方式并不相同:第一个将为您提供子流,而第二个将为您提供列表流。
因此,我们必须以不同的方式处理它们。
首先,让我们为您的列表编写一个缩减器:
private SystemCodeTracking reduceList(List<SystemCodeTracking> list) throws Exception {
if (list.isEmpty()) {
throw new Exception();
} else {
SystemCodeTracking building = list.get(0);
building.setId(0L);
list.forEach(next -> building.setId(building.getId() + next.getId()));
return building;
}
}
因此,对于列表中的每个元素,我们都会递增 building.id
,以便在遍历整个列表后获取我们想要的值。
现在你只需要做
Source<SystemCodeTracking, SourceQueueWithComplete<SystemCodeTracking>> loggedSource = source
.groupBy(20000, SystemCodeTracking::getEntityName) // group by name
.groupedWithin(100, FiniteDuration.create(10, TimeUnit.SECONDS) // for a given name, group by time window (or by packs of 100)
.filterNot(List::isEmpty) // remove empty elements from the flow (if no element has passed in the last second, to avoid error in reducer)
.map(this::reduceList) // reduce each list to sum the ids
.log("====== doing reduceing ") // log each passing element using akka logger, rather than `System.out.println`
.mergeSubstreams() // merge back all elements with different names
关于java - Akka流滑动窗口通过SourceQueue控制receive到sink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316740/
我想用 Future 做一个异步工作。 但是下面的 .sink() 闭包 永远不会被调用。 看起来 Future 的实例在它被调用后就被释放了。 Future { promise in
我在我的 aspnet core 应用程序中使用 Serilog 进行日志记录。我需要频繁地将日志事件写入控制台(每秒 300-500 个事件)。我在 docker 容器内运行我的应用程序,并使用 O
为了查看在 foreach() 中运行的函数输出的控制台消息循环我遵循了 this guy 的建议并添加了一个 sink()像这样调用: library(foreach) libra
我正在使用 kafka connect 从 Mongodb -> Elasticsearch 移动数据。 目前,更新的记录作为新文档插入到 Elasticsearch 索引中。但是,我想根据 ID 更
我在 R 中处理以下数据: > str(df) 'data.frame': 369269 obs. of 12 variables: $ bkod : int 110006 110006 1
我正在使用 Tokio 玩异步/等待功能,并在我的 Cargo.toml 中启用了异步/等待功能。 (以及 2018 年版的最新 Rust nightly): tokio = { version =
这个问题在这里已经有了答案: URLSession.shared.dataTaskPublisher not working on IOS 13.3 (3 个回答) 1年前关闭。 这是我的管道: UR
我正在尝试使用flume来使用Twitter Stream API并将该tweet索引到我的elasticsearch中。我将flume.conf设置为使用com.cloudera.flume.sou
我正在尝试将数据从 kafka(最终我们将使用在不同实例上运行的 kafka)发送到 hdfs。我认为 Flume 或某种摄取协议(protocol)对于将数据导入 hdfs 是必要的。所以我们使用c
我怎样才能将输出重定向到某个 txt 文件,但以这样一种方式,以便我可以在逐步生成的同时在控制台中同时看到该输出? 最佳答案 只需使用 sink 的 split=TRUE 参数: sink(file=
我一直在疯狂地尝试让这一切发生,但我就是想不通(初学者)。 正如你所看到的,当你向下滚动时,顶部的头部部分会粘在页面的顶部,但也会溢出一点。这是用 stickyjs 完成的。我也想对头部底部做同样的事
我一直在使用 Serilog.Sinks.Email,我注意到(除了我没有收到电子邮件这一事实),当我执行 Log 语句时没有异常或任何表明失败的信息.即使我为 MailServer 放入垃圾邮件,L
两者的输出 pactl list sink-inputs和 pacmd list-sink-inputs包含一个属性部分: Properties: media.name = "ALSA Pla
我有一个函数f :: ByteString -> String ,并且需要一个 Sink ByteString (ResourceT IO) . 我怎么得到这个? 不幸的是,这些文档不是很有帮助...
我将 RxSwift 与以下类似的东西一起使用 extension Reactive where Base: UIViewController { public var showError:
如何在 Python Spark 结构化流中使用 foreach 来触发输出操作。 query = wordCounts\ .writeStream\ .outputMode('upd
我正在尝试将 R 脚本的错误和警告记录到外部文件中。同时我希望能够在 RStudio 的控制台中看到错误和警告(对开发和调试有用)。我正在尝试使用以下代码: logfile <- file("my_f
我正在使用 R 的 sink() 函数将错误、警告、消息和控制台输出捕获到单个文本文件中。 我想知道是否同时沉没两个 留言 和 输出 类型到单个打开的文件是不好的吗? 我将上述所有内容捕获到一个文件中
我正在测试Serilog.Sinks.Elasticsearch库和ELK堆栈(Elasticsearch&Kibana)的组合,以从我的ASP.NET Core 2.2应用程序中收集日志。 Web应
我基本上是从 Kafka 源读取数据,并将每条消息转储到我的 foreach 处理器(感谢 Jacek 页面提供的简单示例)。 如果这确实有效,我实际上应该在此处的 process 方法中执行一些业务
我是一名优秀的程序员,十分优秀!