2
在Hadoop Reducer中,我希望在特定條件下創建併發布新密鑰,並且我希望確保這些密鑰是唯一的。如何在Hadoop Reducer中創建新的唯一密鑰
因爲我想要的僞代碼是這樣:
@Override
protected void reduce(WritableComparable key, Iterable<Writable> values, Context context)
throws IOException, InterruptedException {
// do stuff:
// ...
// write original key:
context.write(key, data);
// write extra key:
if (someConditionIsMet) {
WritableComparable extraKey = createNewKey()
context.write(extraKey, moreData);
}
}
所以我現在有兩個問題:
- 是否有可能在所有發出超過一個不同的密鑰在減少( )?我知道鑰匙不會被使用,但這對我來說是好的。
額外的關鍵在所有減速器中必須是唯一的 - 這既是出於應用原因,也是因爲我認爲它會違反縮減階段的合同。 什麼是生成跨減速器(可能跨作業?)唯一的密鑰的好方法?
可能獲取縮減器/作業ID並將其併入密鑰生成?