我在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
2条答案
按热度按时间gojuced71#
我已经向aws团队确认,这是一个已知的错误与aws雅典娜在当时的问题被问到。我不确定这件事是否解决了。
brvekthn2#
如有疑问,请使用CTA删除任何副本:
参考文献:https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html