我有一个mongodb
集合,看起来像这样
Id Name createTime updateTime Age Country verificationStatus
Id1 Abc 10-7-2013 10-7-2013 21 Xxxx INITIAL_MAIL
Id2 Efg 9-7-2013 10-7-2013 22 Xxxx FIRST_REMINDER
Id3 Hij 8-7-2013 10-7-2013 45 Xxxx INITIAL_MAIL
我有一个级联工作,它会从另一个集合进行一些评估,我只想通过“
verificationStatus
”更新“updateTime
”和“Id
”列,而不会影响其他列但是在层叠时,如果我设置这两列,则会丢失其他列数据。我只剩下这样的东西。
Id updateTime verificationStatus
Id1 11-7-2013 BLOCKED
Id2 11-7-2013 SECOND_REMINDER
Id3 11-7-2013 FIRST_REMINDER
SinkMode UPDATE
非常适合按事务更新事务,但不适用于单个列数据。我该如何解决这个问题?
PS:加入或合并无效。由于级联设计,Source和Sink不能指向同一集合。
最佳答案
选项1:
编写一个层叠的Function
,以更新上面的这两列,然后将Function
和原始字段传递到Pipe
中,并使用Fields.REPLACE
将列替换为新的列值。
选项2:
您可以创建两个Pipes
,一个要保留的原始列数据,其中包括您在帖子中提到的id
字段,另一个用Pipe
更新这些列,然后使用CoGroup
将这些数据集重新组合在一起。
关于hadoop - Hadoop级联框架以更新特定的列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17589883/