首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更快地比较来自S3桶的一天数据

更快地比较来自S3桶的一天数据
EN

Stack Overflow用户
提问于 2017-04-25 21:02:03
回答 1查看 146关注 0票数 0

考虑下面的2个数据流

代码语言:javascript
复制
1. Front End Box ----> S3 Bucket-1

2. Front End Box ----> Kafka --> Storm ---> S3 Bucket-2

来自这些箱子的日志正在被转移到S3桶中。所需的是用流程2代替流程1。

现在,需要在Bucket-1Bucket-2之间验证数据,以确保可以使用流2。

尝试了以下技术选择:

代码语言:javascript
复制
1. Python : boto3 Apis
2. Qubole

两者都在有限的数据集上工作,qubole比python脚本具有更高的可伸缩性。但它仍然需要很长的时间去做(从来没有完成,不得不杀死后跑了一夜)。我们将在这里看到5亿个条目。

查询

代码语言:javascript
复制
SELECT
    count(*)
FROM
    TableA LEFT OUTER JOIN TableB
        ON TableA.id = TableB.id
WHERE
    TableB.id IS NULL
    AND TableA.id IS NOT NULL

问题

对工具有什么建议吗?如何更快地实现这一点?

有什么方法可以避免加入吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-02 17:55:56

终于避免了加入。下面的解决方案很好

代码语言:javascript
复制
select sum_cat, count(*)
FROM
(
   select id, sum(category) as sum_cat 
   from 
   (
       select distinct id, 1 as category
       from Table-1

       UNION ALL 

       select distinct id, 1 as category
       from Table-2 

       UNION ALL 

       select distinct id, 2 as category
       from Table-3

       UNION ALL 

       select distinct id, 2 as category
       from Table-4

  )all_ids
   group by log_id
)a
 group by sum_cat;

解释

  1. Table-1Table-2的数据与Table-3Table-4中的数据进行比较。
  2. 因此,我们从这些表集将一个category分配给id。
  3. 集合A中的所有ids都将具有category = 1,而设置B的记录将具有category = 2
  4. 现在我们将类别值和组按ids相加。因此,当id在两个集合中都存在时,它的值为3。仅在集合A中的id将有值1,这是缺失的记录。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43620891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档