在aws athena(presto)distinct sql查询中出现重复结果?

whlutmcx  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(378)

我在s3上有一堆只包含MD5的文件,每行一个。我创建了一个aws athena表来对md5运行重复数据消除查询。这些文件和表中总共有数亿个md5。
athena表创建查询:

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;

所有结果输出。雅典娜的CSV仍然有重复的MD5。有什么好处?
雅典娜在做部分重复数据消除吗更奇怪的是,如果我表演 COUNT(DISTINCT md5) 在athena中,我得到的计数与导出时返回的行数不同。 COUNT(DISTINCT md5) 雅典娜:97533226
不同MD5出口记录:97581616
结果导出中有14790个重复项,因此计数(distinct)计数和结果导出都不正确。
雅典娜是在出口时复制的吗情节愈演愈烈。如果我在athena表中查询athena结果导出中复制的MD5之一,我只从表中得到一个结果/行。我用一个 LIKE 查询以确保空格没有引起问题。这意味着雅典娜正在向导出中添加副本。在结果中,同一个md5的数目永远不会超过两个。

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

雅典娜的计数和结果文件都错了吗我用mysql删除了相同的记录,最后得到了97531010个惟一的md5。雅典娜计数和结果详情如下。 COUNT(DISTINCT md5) 雅典娜:97533226
不同MD5出口记录:97581616
结果导出中有14790个重复项,因此似乎计数(distinct)计数和结果导出都不好。
我认为这是一个雅典娜错误-我已经提交了一张罚单,与美国焊接学会的开发团队得到这个固定,并将更新这个职位时,它是。
这里是相关的aws论坛帖子,其他用户也看到了同样的问题。https://forums.aws.amazon.com/thread.jspa?messageid=764702

gojuced7

gojuced71#

我已经向aws团队确认,这是一个已知的错误与aws雅典娜在当时的问题被问到。我不确定这件事是否解决了。

brvekthn

brvekthn2#

如有疑问,请使用CTA删除任何副本:

CREATE TABLE new_table
WITH (
      format = 'Parquet',
      parquet_compression = 'SNAPPY')
AS SELECT DISTINCT *
FROM old_table;

参考文献:https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html

相关问题