PySpark join返回一个空字典而不是None

问题描述 投票:1回答:1

我有RDD:

[('4', 1),
 ('1', 1),
 ('8', 1),
 ('9', 1),
 ('10', 1),
 ('2', 1),
 ('3', 1),
 ('5', 1),
 ('6', 1),
 ('7', 1),
 ('11', 1)]

我试图将leftOoJoin()这个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)))这样做干净的方法是什么?

python pyspark pagerank
1个回答
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()

这会在示例数据上产生所需的输出。

© www.soinside.com 2019 - 2024. All rights reserved.