2016-01-27 21 views
2

如果我有一个数据流,每天给我1000万条记录(数据流A),另一条数据流每天给我10亿条数据流(数据流B),那么什么是有效的方法来查看数据是否有重叠?查找两条大数据流中的客户条目的有效方法

更具体地说,如果在A流中有一个客户访问网页,并且同一个客户访问B流中的不同网页,我怎么能告诉客户访问了这两个网页?

我最初的想法是将记录放入关系数据库并进行连接,但我知道这样做效率很低。

什么是更有效的方法来做到这一点?我将如何使用Hadoop或Spark等工具来完成此操作?

+0

你需要它来创建一些统计数据为每个用户对或只是获取这两个网站的不同用户数量? – Niemand

+0

刚刚得到访问这两个网站的用户列表 – glcohen

+0

噢,我只是想,如果你想得到近似的用户访问这两个网站的数量,你可以尝试HyperLogLog - https://github.com/twitter/algebird,但这可能不是这种情况。 – Niemand

回答

1

一个连接应该是一个处理这个问题的有效方法。您应该有两个数据集排序,或CustomerID上的索引(索引将按CustomerID排序)。由于索引,SQL引擎会知道这些集合是有序的,并且应该能够非常有效地进行连接。

如果你只找实例,其中客户ID在这两个,这可能是沿着线SQL查询:

Select Distinct A.CustomerID 
From A 
    Inner Join B 
    on A.CustomerID = B.CustomerID 
相关问题