python-PySpark广播变量加入

我正在执行联接,我的数据跨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 toLocalIterator()函数


下一篇:python-在Spark本地模式下包含软件包