首页 文章

AWS Athena(PrestoDB)DISTINCT SQL查询中的结果是否重复?

提问于
浏览
6

我在S3上有一堆文件,只包含MD5,每行一个 . 我创建了一个AWS Athena表来对MD5运行重复数据删除查询 . 在这些文件和表格中总共有数亿个MD5 .

雅典娜表创建查询:

CREATE EXTERNAL TABLE IF NOT EXISTS database.md5s (
  `md5` string 
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ','
) LOCATION 's3://bucket/folder/';

以下是我尝试过的所有“重复数据删除”查询(这些查询应该都是相同的):

SELECT DISTINCT md5
FROM md5s;`

SELECT md5
FROM md5s
GROUP BY md5;

SELECT md5
FROM md5s
GROUP BY DISTINCT md5;

SELECT DISTINCT md5
FROM md5s
GROUP BY DISTINCT md5;

来自Athena的所有结果输出.csvs仍然重复MD5 . 是什么赋予了?


Is Athena Doing Partial Deduplication? - 更奇特的是,如果我在Athena中执行 COUNT(DISTINCT md5) ,我获得的计数与导出时返回的行数不同 .

雅典娜

  • COUNT(DISTINCT md5) :97,533,226
    出口不同MD5的

  • 记录:97,581,616

  • 结果导出中有14,790个重复项,因此 both the COUNT(DISTINCT) counts are bad, and the results export are bad.


Is Athena CREATING Duplicates on Export? - 情节变粗 . 如果我在Athena表中查询Athena结果导出中重复的MD5之一,我只从表中获得一个结果/行 . 我使用 LIKE 查询对此进行了测试,以确保空格不会导致问题 . 这意味着Athena正在向导出添加重复项 . 结果中至少有两个相同的MD5 .

select
  md5,
  to_utf8(md5)
from md5s
where md5 like '%0061c3d72c2957f454eef9d4b05775d7%';

Are Athena's Counts & Results File Both Wrong? - 我使用MySQL重复了这些相同的记录,最终获得了97,531,010个独特的MD5 . Athenas计数和结果详情如下 .

雅典娜

  • COUNT(DISTINCT md5) :97,533,226
    出口不同MD5的

  • 记录:97,581,616

  • 结果导出中有14,790个重复项,所以似乎 both the COUNT(DISTINCT) counts are bad, and the results export are bad.


I think this is an Athena bug - 我是开发团队来解决这个问题,并且会更新这篇文章 .

以下是其他用户看到相同问题的相关AWS论坛帖子 . https://forums.aws.amazon.com/thread.jspa?messageID=764702

1 回答

  • 2

    我已经与AWS团队确认,这是在提出问题时AWS Athena的一个已知错误 . 我不确定这是否已经解决 .

相关问题