指定文本/字符串类型作为Hadoop计数器的值



当前设置/增加hadoop计数器的方法只接受long值。

例如:increment(long incr)setValue(long value)是我从Hadoop Javadocs中抽出的两个方法。

我的要求是存储更复杂类型的信息作为计数器的一部分(作为键/值对)。此信息可能涉及(string, string)键、值对。

我如何使用Hadoop计数器实现这一点?如果这是不可能的,Hadoop/MR中是否有其他的数据结构/设施允许存储这样的杂项信息,可以通过指定job_id等来检索。

谢谢,参数

计数器可以工作,因为计数是计数的总和。每个任务都有自己的计数器,可以向上聚合。字符串不完全具有相同类型的信息(如何增加字符串?)。

查看ZooKeeper。它非常适合存储各种信息和在进程之间进行协调。您可以创建一个表示作业运行的znode(也许是job_id ?),然后将单个字符串作为子字符串。

由于Hadoop Counters只支持string,因此可以使用map和reduce函数中的OutputCollector.collect(K,V)对键值对进行统计。

这样做的好处是,使用OutputCollector的来自映射器的统计信息可以在reducer函数中进一步处理(像聚合一样)。来自reducer的统计数据只被写入指定的输出格式,不进行任何处理。

相关内容

  • 没有找到相关文章

最新更新