- 57
- 0
我有一批数据(100亿)如下,
ID FROM TO
1 A B
2 A C
3 B A
4 C A
删除重复的双向关系数据如下
ID FROM TO
1 A B
2 A C
1、因为数据量太大,bloomfilter已经不太合适了;
2、使用数据库查询去重复效率又太低下;
3、用spark或者hadoop处理这样海量的数据,是不是会比较合适?网络上找到的去重方案都是类似使用groupby某个字段去重复,这对于我这数据意义不大啊。
- 共 0 条
- 全部回答
-
①颗薪為誰而空 普通会员 1楼
在Spark或Hadoop中,删除重复的双向关系数据通常涉及到数据的排序和合并。以下是一个使用Spark的示例:
首先,我们需要加载数据并将其划分为两个子集,一个用于处理重复的元素,另一个用于处理未重复的元素。我们可以使用
flatMap函数来实现这一点:scala val df1 = spark.read.format("csv") .option("header", "true") .load("path/to/dataset1.csv") .select("element1", "element2") .groupBy("element1") .agg(count("element2").alias("count")) .filter("count > 1") .groupBy("element1") .agg(sum("element2").alias("sum")) .show()在这个例子中,我们首先加载了数据,然后按元素1对数据进行分组,然后计算每个元素2的出现次数。我们还使用
filter函数删除了只出现一次的元素。最后,我们再次按元素1对数据进行分组,然后计算每个元素2的总和。然后,我们可以使用
map函数将重复的元素转换为单个元素:scala val df2 = df1.select("element1", "element2") .groupBy("element1") .agg(count("element2").alias("count")) .filter("count > 1") .groupBy("element1") .agg(sum("element2").alias("sum")) .mapValues(_.sum) .select("element1", "element2") .groupBy("element1") .agg(count("element2").alias("count")) .filter("count > 1") .groupBy("element1") .agg(sum("element2").alias("sum")) .show()在这个例子中,我们首先计算了每个元素2的总和,然后将其转换为单个元素,最后再次按元素1对数据进行分组,然后计算每个元素2的总和。
这样,我们就删除了重复的双向关系数据。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
