当前位置: 首页 > 知识库问答 >
问题:

如何根据 RDD 列的子集有效地选择不同的行

呼延宪
2023-03-14

考虑一个案例类:

case class Prod(productId: String, date: String, qty: Int, many other attributes ..)

和一个

val rdd: RDD[Prod]

包含该类的许多实例。

唯一键是(productId,date)元组。然而,我们确实有一些副本。

是否有任何有效的方法来删除重复项?

手术

      rdd.distinct

将查找重复的整行。

回退将涉及将唯一的(productId,date)组合连接回整个行:我正在研究如何做到这一点。但即便如此,还是有几次手术。更简单的方法(也更快?)如果它存在的话会很有用。

共有1个答案

从智志
2023-03-14

我会在Dataset上使用dropDuplicates

val rdd = sc.parallelize(Seq(
  Prod("foo", "2010-01-02", 1), Prod("foo", "2010-01-02", 2)
))

rdd.toDS.dropDuplicates("productId", "date")

但是

rdd.keyBy(prod => (prod.productId, prod.date)).reduceByKey((x, _) => x).values

 类似资料:
  • 问题内容: 这是我的表: 我想按标题有效地获取标题。 此刻,我首先获得条目的,然后手动进行另一个查询。 还有其他更优雅的解决方案吗? 问题答案: A可能会有所帮助,并且如果不是出于性能原因,通常是对许多嵌套查询的更可取的解决方案。 在您的情况下,请尝试:

  • 我在火花中这样做 这张表上没有主键,我想根据每个不同的cityId随机获取一行 例如,这是一个正确的答案 例如,这也是一个正确的答案 想到的一种方法是使用< code>group by。然而,这要求我在另一列上使用聚合函数。(比如min())。然而,我只想拉出一整行(不管是哪一行)。

  • 对于上下文,我的最终目标是从非常大的数据帧中删除几乎重复的行。以下是一些虚拟数据: 在此数据中,来自unique_1和unique_2的观测值的组合应该是不同的,但它们并非总是如此。当它们重复时,它们对于绝大多数列具有相同的值,但在非常小的其他列集上具有变化。我正在尝试制定一种策略来处理近似重复项,但这很复杂,因为每组近似重复项都有一组不同的列,其中包含变化。 我正在尝试一次查看包含一组近似重复项

  • 在Pandas的数据框中,一些列是数字的,像浮动;一些是非数字的,像对象。我们希望删除那些数值列为NaN的行,但不删除那些非数值列为NaN的行。 例如,对于具有四列的df:a、B、C和D。a和C的数据类型为Object,B和D的数据类型为Float。 我们将只删除其中一些数字列(浮点数)为NaN的行,而不应该删除其中一些非数字列(对象)为NaN的行。 最终结果如下: 我的步骤是: 检查哪些列的数据

  • 问题内容: 我有一个名为@status的变量,该变量在此select语句之前设置: 我只想选择if列,否则我想为shipwith选择null。我该如何完成? 问题答案:

  • 我有以下表在PostgreSQL 11. 我想得到具有col1,col2,col3和col4的不同值的行,如果col1,col2,col3相同,则取col1的第一个值。 期望的输出是: 我试着回答以下问题。 如何将输出限制为每col2,col3.获得一个col1值。。例如,选择col1值:3876,不包括3924。