是否有在Flink中使用直方图累加器的示例

时间:2016-12-29 23:35:52

标签: apache-flink

我偶然发现了Flink层次结构中的直方图类,但是没有"这里是如何使用这个"围绕它的文件。我想做类似的事情:

Histogram

但遗憾的是if (items[i].ID == id){ 无法通过Flink进行序列化。也许有一个"这里有你如何使用这个"还是有通过flink进行直方图的另一种方式。

我显然做错了什么。

1 个答案:

答案 0 :(得分:6)

Flink的累加器不能用作DataStreamDataSet的数据类型。

相反,它们是通过RuntimeContext注册的,RichFunction.getRuntimeContext(). This is usually done in the可以从method of a open()class MyFunc extends RichFlatMapFunction[Int, Int] { val hist: Histogram = new Histogram() override def open(conf: Configuration): Unit = { getRuntimeContext.addAccumulator("myHist", hist) } override def flatMap(value: Int, out: Collector[Int]): Unit = { hist.add(value) } } RichFunction`获得:

JobExecutionResult

累加器的所有并行实例定期发送到JobManager(主进程)并合并。可以从StreamExecutionEnvironment.execute()返回的checkboxRadio.bind(this)();访问其值。

我认为您的用例无法通过Flink的累加器来解决。您应该创建自定义直方图数据类型。