在两个大型数据流中查找客户条目的有效方法

时间:2016-01-27 21:03:58

标签: sql hadoop apache-spark

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

更具体地说,如果流A中的客户访问了网页,并且同一客户访问了流B中的其他网页,我该如何判断客户是否访问了这两个网页?

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

更有效的方法是什么?我怎样才能使用像Hadoop或Spark这样的工具?

1 个答案:

答案 0 :(得分:1)

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

如果您只查找CustomerID同时存在的实例,则可能是以下行的SQL查询:

Select Distinct A.CustomerID 
From A 
  Inner Join B 
    on A.CustomerID = B.CustomerID