Tag: 减少

为什么我看不到Kafka Streams reduce方法的任何输出?

给出以下代码: KStream stream = builder.stream(Serdes.String(), customSerde, “test_in”); stream .groupByKey(Serdes.String(), customSerde) .reduce(new CustomReducer(), “reduction_state”) .print(Serdes.String(), customSerde); 我在Reducer的apply方法中有一个println语句,当我希望减少时会成功打印出来。 但是,上面显示的最终打印语句不显示任何内容。 同样,如果我使用方法而不是print ,我在目标主题中看不到任何消息。 在reduce语句之后我需要什么来查看减少的结果? 如果一个值被推送到输入,我不希望看到任何东西。 如果按下具有相同键的第二个值,我希望减少器应用(它确实如此),并且我还期望减少的结果继续到处理管道中的下一步。 如上所述,我在管道的后续步骤中没有看到任何内容,我不明白为什么。

Java将哈希转换为随机字符串

我正在尝试开发一种在彩虹表生成器中使用的缩减function。 缩减函数背后的基本原理是它接受散列,执行一些计算,并返回一定长度的字符串。 目前我正在使用SHA1哈希,我需要返回一个长度为3的字符串。 我需要在任意三个随机字符上组成字符串: abcdefghijklmnopqrstuvwxyz0123456789 我面临的主要问题是我写的任何缩减函数总是返回已经生成的字符串。 一个好的缩减函数只会很少返回重复的字符串。 有人可以提出任何想法来实现这一目标吗? 或者对哈希到字符串操作的任何建议都会很棒。 提前致谢 玩笑

带有3个参数的Java8 stream.reduce() – 获得透明度

我编写了这段代码,将一个单词列表缩减为多少单词以’A’开头。 我只是为了学习Java 8而写它,所以我想更好地理解它[免责声明:我意识到这可能不是编写这段代码的最好方法; 这只是为了练习!] 。 Long countOfAWords = results.stream().reduce( 0L, (a, b) -> b.charAt(0) == ‘A’ ? a + 1 : a, Long::sum); 中间参数/ lambda(称为累加器)似乎能够在没有最终’Combiner’参数的情况下减少完整列表。 事实上,Javadoc实际上说: {@code accumulator}函数充当融合映射器和累加器*,它有时比单独的映射和缩减更有效,*例如当知道先前减少的值允许您避免*某些计算时。 [编辑来自作者] –以下陈述是错误的,所以不要让它混淆你; 我只是把它放在这里,所以我不会破坏答案的原始背景。 无论如何,我可以推断累加器必须输出组合器组合的1和0。 我没有从文档中发现这一点特别明显。 我的问题 有没有办法在组合器执行之前查看输出是什么,所以我可以看到组合器组合的1和0的列表? 这将有助于调试更复杂的情况,我相信我最终会遇到这种情况。