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

l3zydbqr  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(347)

考虑下面的2个数据流

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

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

箱子里的原木被转移到s3桶里。要求用流2代替流1。
现在数据需要在 Bucket-1 以及 Bucket-2 以确保可以使用流2。
尝试了以下技术选择:

1. Python : boto3 Apis
2. Qubole

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

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

问题
有没有关于更快实现这一目标的工具和方法的建议?
有什么办法可以避免加入吗?

s2j5cfk0

s2j5cfk01#

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

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;

解释
将其与来自的数据进行数据比较 Table-1 以及 Table-2 有了它 Table-3 以及 Table-4 所以我们分配一个 category 从这组表中标识
集合a中的所有ID都将 category = 1 b组的记录 category = 2 现在我们求类别值的和,并按ID分组。所以当id在两个集合中都存在时,它的值为3。仅在集合a中存在的ID的值为1,这是丢失的记录。

相关问题