我正在执行一个连接,我的数据跨越 100 多个节点。所以我有一个小的键/值列表,我正在加入另一个键/值对。
我的列表是这样的:
[[1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0], [9, 0], [10, 0], [11, 0], [16, 0], [18, 0], [19, 0], [20, 0], [21, 0], [22, 0], [23, 0], [24, 0], [25, 0], [26, 0], [27, 0], [28, 0], [29, 0], [36, 0], [37, 0], [38, 0], [39, 0], [40, 0], [41, 0], [42, 0], [44, 0], [46, 0]]
我有广播变量:
numB = sc.broadcast(numValuesKV)
当我加入时:
numRDD = columnRDD.join(numB.value)
我收到以下错误:
AttributeError: 'list' object has no attribute 'map'
最佳答案
你正在广播一个列表,这绝对没问题。
你需要做的是
b=sc.broadcast(lst)
rdd.map(lambda t: t if t[0] in b.value)
这里 t[0] 应该看起来像 [1,0] 等。但我希望你明白了....
关于python - PySpark 广播变量连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29754562/