python - PySpark 广播变量连接

标签 python apache-spark 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 广播变量连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29754562/

相关文章:

python - 如何修复编程错误 : (1064,“您的 SQL 语法有错误)?

python - 在 iter 上并行化循环

dataframe - 如何按特定字段对 Spark DataFrame 中的结构类型数组进行排序?

Python Spark/Yarn 内存使用

python - 将 "help"移动到 python argparse 中的不同参数组

python - 欧拉计划的非蛮力解决方案 25

apache-spark - 为什么 StandardScaler 不将元数据附加到输出列?

apache-spark - 线程 "main"java.lang.NoClassDefFoundError : com/typesafe/config/ConfigFactory 中的异常

python - 使用 toPandas() 和 databricks 连接时遇到 'java.lang.OutOfMemoryError: Java heap space'

Python worker 连接失败