以下程序在zip步骤中失败。

x = sc.parallelize([1, 2, 3, 1, 2, 3])
y = sc.parallelize([1, 2, 3])
z = x.distinct()
print x.zip(y).collect()

产生的错误取决于是否已指定多个分区。

我明白那个

两个RDD [必须]必须具有相同数量的分区和每个分区中相同数量的元素。

解决此限制的最佳方法是什么?

我一直在用以下代码执行操作,但我希望找到更有效的方法。

def safe_zip(left, right):
    ix_left = left.zipWithIndex().map(lambda row: (row[1], row[0]))
    ix_right = right.zipWithIndex().map(lambda row: (row[1], row[0]))
    return ix_left.join(ix_right).sortByKey().values()

#1楼 票数:0

我认为这可以通过在RDD上使用cartesian()来实现

import pyspark
x = sc.parallelize([1, 2, 3, 1, 2, 3])
y = sc.parallelize([1, 2, 3])
x.distinct().cartesian(y.distinct()).collect()

  ask by Charles Hayden translate from so

未解决问题?本站智能推荐:

3回复

如何在 Pyspark 数据框中分组后收集地图?

我有一个像这样的 pyspark 数据框: 现在,我想按“id”将它们分组并将它们聚合成这样的 Map: 我想我们可以使用 pyspark sql 函数的collect_list将它们收集为列表,然后我可以应用一些 UDF 函数将列表转换为 dict。 但是有没有其他(更短或更有效)的方法来
2回复

如何在pyspark中分组后从列中取出唯一值并创建具有某些条件的另一列

我有这样的表A: 我想要表B: 当我们做 groupby(r,z) 时,我们得到了上面的组合,但是如何将表 A 中的 v 列拆分为 v_num 列 v_num 是表 A 中提到的数字,除了 99,如果在分组时有 99,我们应该计算它,但 v_num 与99 如果我们进入组 1,2 组合,
2回复

如何在PySpark中压缩两个RDD?

我一直在尝试将averagePoints1和kpoints2下面的两个Rdds合并。 它不断抛出此错误 并且我尝试了很多事情,但是我不能使两个Rdds相同,具有相同的分区数。 我的下一步是在两个列表上应用欧几里德距离函数来测量差异,因此,如果有人知道如何解决此错误或有不同的方法,我可
1回复

如何在pyspark中压缩/连接值和列表

我正在处理一个使用 4 个输入的函数。 为此,我想得到一个总结这 4 个元素的列表。 但是我有两个变量,其中数据是唯一的,两个变量由列表组成。 我可以用arrays_zip压缩这两个列表,但我无法获得包含 4 个元素的数组列表: 我想得到什么: 我的想法是将列表中的 l1 和 l2 转换为
1回复

如何在pyspark中压缩两列?

我使用: Python 3.6和PySpark 2.3.0 。 在下面的exaple我只拖项目item也是我可以有更多类似的信息first_name , last_name , city 。 我有一个具有以下架构的数据框: 这是我的输出: 我想将此数据框转换为:
1回复

在pyspark中分类后获取所有评估指标

我已经训练了一个模型,想要计算几个重要的指标,例如accuracy 、 precision 、 recall和f1 score 。 我遵循的过程是: 但是,它只能计算accuracy和auc ,而不能计算其他三个。 我应该在这里修改什么?
3回复

如何在pyspark中分解数据框的多个列

我有一个数据框,其中包含类似于以下列的列表。 所有列中列表的长度不相同。 我希望以这样的方式分解数据帧,以便获得以下输出 - 我怎样才能做到这一点?
1回复

压缩包后,Pyspark找不到合适的TLS CA证书

我已经从这个pyspark-example-project创建了一个Pyspark应用程序。 在示例项目中, dependencies.zip是一个包含我的实际代码的依赖包。 我正在使用requests将spark-submit作业的元数据发布到https启用的端点。 我按如下方式提交