我有一个RDD:
[('4', 1),
('1', 1),
('8', 1),
('9', 1),
('10', 1),
('2', 1),
('3', 1),
('5', 1),
('6', 1),
('7', 1),
('11', 1)]
我正尝试将RDD与另一个RDD:
[('2', ({'3': 1}, 1)),
('3', ({'2': 1}, 1)),
('4', ({'1': 1, '2': 1}, 2)),
('5', ({'4': 1, '2': 1, '6': 1}, 3)),
('6', ({'2': 1, '5': 1}, 2)),
('7', ({'2': 1, '5': 1}, 2)),
('8', ({'2': 1, '5': 1}, 2)),
('9', ({'2': 1, '5': 1}, 2)),
('10', ({'5': 1}, 1)),
('11', ({'5': 1}, 1))]
因此,我返回的记录之一是
('1', (1, None)),
作为参考,其他记录如下:
[('4', (1, ({'1': 1, '2': 1}, 2))),
这给我带来了麻烦,因为我以后需要处理数据,并且我需要一个空字典,而不是无字典。即('1', (1, ({}, 0)))
这样做的干净方法是什么?
答案 0 :(得分:1)
您可以使用map
这样做,并测试None
:
def rep(r):
if r[1][1] == None:
return (r[0], (r[1][0],({},0)))
return r
rdd_left.leftOuterJoin(rdd_right).map(rep).collect()
这将在示例数据上产生所需的输出。