在两个不同的情况下,我不得不重命名管道中的所有字段以加入(使用Merge
or CoGroup
)。我最近做的是:
//These two pipes contain similar values but different Field Names
Pipe papa = new Retain(papa, fieldsFrom);
Pipe pepe = new Retain(pepe, fieldsTo);
//Where fieldsFrom.size() == fieldsTo.size() and the fields positions match
for (int i =0; i < fieldsFrom.size(); i++){
pepe = new Rename(pepe, fieldsFrom.select(new Fields(i)),
fieldsTo.select(new Fields(i)));
}
//this allows me to do this
Pipe retVal = new Merge(papa, pepe);
显然这是非常脆弱的,因为我需要确保 FieldsFrom 和 FieldsTo 中的字段位置保持不变并且它们的大小相同等。
有没有更好的 - 不那么脆弱的合并方式而无需经历上述所有仪式?