当前位置: 首页 > 面试题库 >

将RDD划分为长度为n的元组

幸越泽
2023-03-14
问题内容

我对Apache Spark和Python比较陌生,想知道像我将要描述的东西是否可行?

我有一个格式为[m 1,m 2,m 3,m 4,m 5,m 6, … m n
]的RDD(运行rdd.collect()时会得到这个)。我想知道是否有可能将此RDD转换为[[m 1,m 2,m 3),(m 4,m 5,m
6).....(m n-2, m n-1,m n)]。内部元组的大小应为k。如果n不能被k整除,则元组之一应具有少于k个元素。

我尝试使用map函数,但无法获得所需的输出。似乎map函数只能返回具有与最初提供的RDD相同数量的元素的RDD。

更新:我尝试使用分区,也能够使其正常工作。

rdd.map(lambda l: (l, l)).partitionBy(int(n/k)).glom().map(lambda ll: [x[0] for x in ll])

问题答案:

Olologin的答案几乎是正确的,但我相信您想要做的是将RDD分为3个元组,而不是将RDD分为3个元组。为此,请尝试以下操作:

rdd = sc.parallelize(["e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "e10"])
transformed = rdd.zipWithIndex().groupBy(lambda (_, i): i / 3)
                 .map(lambda (_, list): tuple([elem[0] for elem in list]))

在pyspark中运行时,我得到以下信息:

>>> from __future__ import print_function    
>>> rdd = sc.parallelize(["e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "e10"])
>>> transformed = rdd.zipWithIndex().groupBy(lambda (_, i): i / 3).map(lambda (_, list): tuple([elem[0] for elem in list]))
>>> transformed.foreach(print)
...
('e4', 'e5', 'e6')
('e10',)
('e7', 'e8', 'e9')
('e1', 'e2', 'e3')


 类似资料:
  • 在Apache Spark中, -允许将RDD精确划分为分区。 而是如何将给定的RDD划分成分区,使得所有分区(最后一个分区除外)都具有指定数量的元素。鉴于RDD元素的数量是未知的,做<代码>。count()的开销很大。 预期:

  • 我想知道在C中是否有特定的算法来做到这一点。然而,我想出了一些方法。 问题是:我有两个7进制的数字。这些数字是可以整除的,所以我的答案总是整数。我想计算一下商。 最简单的方法可能是将以10为底的两个数字从以7为底转换为以10为底的两个数字,然后使用/运算符进行正常除法,然后将答案重新转换回以7为底。 这种方法有很多缺点,时间消耗过多,主要是溢出。如果divident的长度超过大约(17-19),则

  • 我一直陷在这个问题中,找不到有效的解决办法。 我有N(高达1000万)说最大100个元素的数组。这些数组包含1-10000的数字。 现在我的问题是将这些数组划分为K个组,这样我就可以最小化所有数组中的重复项,即一个数组包含1,4,10,100,另一个数组包含1100。我希望他们进入同一组,因为这样可以最大限度地减少口是心非。我的问题的两个限制条件如下- > 组中向量的数量应均匀分布。 根据大小以递

  • 我有RDD,其中每个记录都是int: 我所需要做的就是将这个RDD拆分成批。即。制作另一个RDD,其中每个元素都是固定大小的元素列表: 这听起来微不足道,然而,最近几天我很困惑,除了下面的解决方案之外,什么也找不到: > 使用ZipWithIndex枚举RDD中的记录: 这将得到我所需要的,然而,我不想在这里使用组。当您使用普通映射Reduce或一些抽象(如Apache Crunch)时,它是微不

  • 如何将整数数组划分为N个子集,使这些子集的和最小? 例如,数组由11个元素组成,我需要其中的6个子集。 子集:<code>{2,1,1,3},{4},}4,3},}3,2},1,2},{3}</code>最小和=7。 另一个答案是:最小和=7。 注意:在分区时,必须保持数字在原始集合中出现的顺序。

  • 问题内容: 我想以所有可能的组合将列表分为n个组(允许可变的组长)。 说,我有以下列表: 如果我指定n = 2,则列表可以分为1个element-3元素或2个element-2元素的组。在拆分列表的两种方式中,每个列表中都有哪些元素的独特组合。 在n = 2的情况下,它们将是: 当n = 1时,这些将是: 在n = 3的情况下,它们将是: 我对长度为0的组不感兴趣,并且组内的顺序无关紧要。 我发现