
























这是一个创建于 2876 天前的主题,其中的信息可能已经有所发展或是发生改变。
现有一些社交数据如下,
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 去重,由于 bloomfilter 本身算法问题,会丢失一些数据;
2、使用数据库查询然后写入到新表,速度有点慢。
3、使用 BerkeleyDB ?
4、使用 hadoop 或者 spark 解决,网上找到的方式几乎都是使用 group by 或者 distinct 但这并不适合我这个场景,如何解决呢?
头大。。。新手上路。。。
1 zjxzhqq 2018 年 7 月 30 日 via Android很简单吧你把后两个字段排下序,然后根据这两个字段去重就可以了 |
2 bsidb 2018 年 7 月 30 日这个就是转无向图的过程吧? 使用 Spark SQL API ( Spark RDD API 的 distinct 有严重的 GC 问题,不推荐)。 1. 将数据导入 Spark SQL 的表 |
6 zhuanggu 2018 年 7 月 30 日select id, `from`, `to` from( select id, `from`, `to`,row_number() over(partition by `from`,`to` order by id) rk) t where rk=1 |
7 luckychenhaha 2018 年 7 月 30 日from 和 to 做字母排序,然后 hadoop 的 kv 自动匹配就可以了 |
11 laxenade 2018 年 7 月 30 日map 阶段:让 from < to |
12 owenliang 2018 年 7 月 30 日难道不是构造一个 from_to 的 key,直接走 spark 或者 mr 去重就可以了吗。。 |
13 bsidb 2018 年 7 月 30 日 via Android@BIGUFO RDD 的 distinct 中每一条记录会创建一个对象,10 亿条记录会创建 10 亿个对象,即使集群多机计算,中间生成这么多对象 GC 压力也很大。SQL API 有钨丝计划优化,gc 问题会小很多。 |
14 bsidb 2018 年 7 月 30 日 via Android@engineer9 如果 from > to 则 map 一个( id, to, from )否则 map(id, from, to) |
16 dangluren 2018 年 7 月 30 日为什么 spark,hadoop 不适合你们的场景。 |
17 dangluren 2018 年 7 月 30 日bloomfilter 其实也是可以的, 首先第一步: 这种需求简单的很呐 |
19 diginWu 2018 年 7 月 30 日百八十 M 的东西内存里面算不就行了么? |
20 diginWu 2018 年 7 月 30 日不好意思少算了一个数量级。 |
21 kavana 2018 年 7 月 31 日hadoop or spark 大数据去重,收藏待用 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。