我在 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;
从 Athena 输出的所有结果 .csvs 仍然具有重复的 MD5。是什么赋予了?
Athena 是否在执行部分重复数据删除?- 更奇怪的是,如果我COUNT(DISTINCT md5)
在 Athena 中执行 a,我得到的计数与导出时返回的行数不同。
COUNT(DISTINCT md5)
在雅典娜:97,533,226- 不同MD5的出口记录:97,581,616
- 结果导出中有 14,790 个重复项,因此COUNT(DISTINCT) 计数都不好,结果导出也不好。
Athena 是否在导出时创建重复项?- 情节变厚了。如果我在 Athena 表中查询在 Athena 结果导出中重复的 MD5 之一,我只能从表中获得一个结果/行。我通过LIKE
查询对此进行了测试,以确保空格不会导致问题。这意味着 Athena 正在向导出添加重复项。结果中永远不会有超过两个相同的 MD5。
select
md5,
to_utf8(md5)
from md5s
where md5 like '%0061c3d72c2957f454eef9d4b05775d7%';
Athena 的计数和结果文件都错误吗?- 我使用 MySQL 对这些相同的记录进行了重复数据删除,最终得到了 97,531,010 个唯一的 MD5。Athenas 计数和结果详情如下。
COUNT(DISTINCT md5)
在雅典娜:97,533,226- 不同MD5的出口记录:97,581,616
- 结果导出中有 14,790 个重复项,因此COUNT(DISTINCT) 计数似乎都不好,结果导出也不好。
我认为这是一个 Athena 错误- 我已向 AWS 的开发团队提交了一张票以修复此问题,并会在更新后更新此帖子。
这是相关的 AWS 论坛帖子,其他用户也看到了同样的问题。 https://forums.aws.amazon.com/thread.jspa?messageID=764702