比较来自S3存储桶的一天数据的速度更快

时间:2017-04-25 21:02:04

标签: python validation amazon-s3 hive qubole

考虑以下2个数据流

1. Front End Box ----> S3 Bucket-1

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

来自框的日志正在转移到S3存储桶。要求是用流2替换流1。

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

尝试了以下技术选项:

1. Python : boto3 Apis
2. Qubole

两者都在有限的数据集上工作,qubole比python脚本更具可扩展性。但是它仍然需要很长时间才能完成(从未完成,不得不在隔夜运行后杀死)。我们在这里看到了五亿条款。

查询

SELECT
    count(*)
FROM
    TableA LEFT OUTER JOIN TableB
        ON TableA.id = TableB.id
WHERE
    TableB.id IS NULL
    AND TableA.id IS NOT NULL

问题

对工具的任何建议,如何更快地实现这一目标?

有没有办法避免加入?

1 个答案:

答案 0 :(得分:0)

最后能够避免加入。以下解决方案正常

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. 中的数据进行数据比较
  3. 因此我们从这些表格
  4. 中为{id}分配category
  5. 集合A中的所有ID都有category = 1,而B集记录有category = 2
  6. 现在我们总结了类别值和按ID分组。因此,当两个集合中都存在id时,它将具有值3.仅在集合A中出现的ID将具有值1,这是缺少记录。