我在S3上有一堆文件,每一行只包含一个MD5s。我创建了一个AWS雅典娜表,以运行针对MD5s的去复制查询。在这些文件和表中总共有数亿的MD5s。
雅典娜表创建查询:
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/';下面是我尝试过的所有"dedup“查询(这些都应该是相同的):
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;雅典娜的所有结果输出.csvs仍然有重复的MD5s。怎么回事?
是雅典娜在做部分重复吗?--更奇怪的是,如果我在雅典娜执行COUNT(DISTINCT md5),我得到的计数与导出时返回的行数不同。
COUNT(DISTINCT md5):97,533,226是雅典娜创造的副本出口?-情节更加复杂。如果我查询雅典娜表中复制在雅典娜结果导出中的一个MD5s,我只能从表中得到一个结果/行。我用一个LIKE查询对此进行了测试,以确保空格不会导致问题。这意味着雅典娜正在向出口中添加副本。结果中从来没有超过两个相同的MD5。
select
md5,
to_utf8(md5)
from md5s
where md5 like '%0061c3d72c2957f454eef9d4b05775d7%';是雅典娜的计数和结果文件都错了吗?-我用MySQL还原了这些相同的记录,最后得到了97,531,010个唯一的MD5s。雅典人的计数和结果详情如下。
COUNT(DISTINCT md5):97,533,226-我认为这是雅典娜的-我已经向AWS的开发团队提交了一张罚单来解决这个问题,并且会更新这个帖子。
这是相关的AWS论坛帖子,其他用户也看到了同样的问题。https://forums.aws.amazon.com/thread.jspa?messageID=764702
发布于 2017-08-08 23:24:45
我已经证实了AWS团队,这是一个已知的错误与AWS雅典娜时,问题被提出。我不确定这件事是否已经解决。
发布于 2019-09-05 06:06:15
如有疑问,请使用CTAS删除任何副本:
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
https://stackoverflow.com/questions/41970488
复制相似问题