我的問題是,我該如何製作櫃檯,我可以在其中放置類似雙打的東西(是的,我確實使用了LongValue,但是這給了我0)?Hadoop計數器 - 我如何使用不同類型的計數器?
回答
Hadoop MapReduce作業計數器根據定義Java long
值。 MapReduce作業實現可以通過TaskAttemptContext
獲取Counter
的句柄。
獲得的句柄Counter
後,作業可以通過增量遞增計數器或將其設置爲一個特定值。
http://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/mapreduce/Counter.html#increment(long)
http://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/mapreduce/Counter.html#setValue(long)
注意,方法簽名都在long
術語規定。域模型不支持使用double
或任何其他數據類型作爲計數器值。
如果這是絕對必要的,那麼你可以想出一些創造性的方式來編碼你的數據類型到long
。一種方法是利用long
和double
都是64位的事實。然後,您可以使用Double#doubleToLongBits
將double
的值編碼爲long
。
http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#doubleToLongBits(double)
然而,只有這樣才能使這個後來感覺是寫解包工作完成後計數器的值,並將其傳遞到Double#longBitsToDouble
自定義代碼。
http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#longBitsToDouble(long)
這將是Hadoop的MapReduce工作櫃檯的一個非常不尋常的用法,但。
作爲一種變通方法,你可以做這樣的事情
long convert = (long) (mydoubleVal * 10000);
context.getCounter(MyCounter.name1).setValue(convert);
而且在驅動程序,你可以得到雙倍值。
long c2 = job0.getCounters().findCounter(MyCounter.name1)
.getValue();
double getMyVal= (double) c2/10000;
- 1. 使用Hadoop計數器 - 多個作業
- 2. 如何創建計數枚舉類型的計數器?
- 3. 如何在Hadoop中獲取計數器
- 4. Hadoop計數器文檔?
- 5. Hadoop計數器可視化
- 6. 我的計時器計數不正確
- 7. 如何使同步計數器計數3,5,7,0並重復?
- 8. Dropwizard計數器和計數器計數相同嗎?
- 9. 如何使用Python製作點火設計器的計數器
- 10. 同步計數器
- 11. 不同類型的Mysql計數
- 12. 使用計數器
- 13. 使用計數器
- 14. 使用數字子類的泛型創建滾動計數器
- 15. SQL服務器:計算列具有不同數據類型
- 16. 如何在使用分片計數器時使用計數器進行排序
- 17. 如何使用C#停止計時器計數器爲零?
- 18. 如何使用NSDate或NSCalendar製作計數器或計時器?
- 19. ol開始計數器與css內容計數器不計數
- 20. 在Android步計數器(計數器傳感器不起作用)
- 21. 「使用Hadoop和mrjob發現」步驟1中的計數器:找不到計數器「
- 22. 如何計算Hadoop的不同集合
- 23. Python的計數器不計數
- 24. Hadoop色調:計數器結果灰顯
- 25. 瞭解Hadoop文件系統計數器
- 26. hadoop中有120多個計數器
- 27. 同時使用循環計數器
- 28. 如何重置我的sidekiq計數器?
- 29. 使用javascript的計數器
- 30. 我不知道如何使用循環和計數器
謝謝,我正在尋找這樣的東西。 – Unknownguy