У меня есть куча файлов на S3, которые содержат только MD5, по одному на строку. Я создал таблицу AWS Athena для запуска запроса дедупликации на MD5. Всего в этих файлах и в таблице содержится сотни миллионов MD5.Дублирующие результаты в AWS Athena (PrestoDB) ОТКАЗАТЬ SQL-запрос?
Афина Таблица Создание запроса:
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 из Афина все еще повторила MD5. Что дает?
ли Афина Doing Частичное дедупликации? - Еще более своеобразно, если я выполняю COUNT(DISTINCT md5)
в Афине, число, которое я получаю, отличается от количества строк, возвращаемых при экспорте.
COUNT(DISTINCT md5)
в Афине: 97,533,226- запись в экспорте различных MD5s: 97,581,616
- есть 14,790 дублирует в экспорте результатов, так как COUNT (DISTINCT) отсчеты плохо, а экспорт результатов Плохо.
Является Athena СОЗДАЕМ Дубликаты на экспорт? - Сюжет сгущается. Если я запрошу таблицу Athena для одного из MD5, который дублируется в экспорте результата Athena, я получаю только один результат/строку из таблицы. Я проверил это с запросом LIKE
, чтобы убедиться, что пробел не вызвал проблемы. Это означает, что Athena добавляет дубликаты к экспорту. В результатах не более двух из тех же MD5.
select
md5,
to_utf8(md5)
from md5s
where md5 like '%0061c3d72c2957f454eef9d4b05775d7%';
ли Графы Афина & Результаты файла Оба неправильно? - Я дедуплировал эти же записи с использованием MySQL и в итоге получил 97 531 010 уникальных MD5. Athenas рассчитывает и детализируют детали ниже.
COUNT(DISTINCT md5)
в Афины: 97,533,226- записи в экспорте различных MD5s: 97,581,616
- есть 14,790 дублей в экспорте результатов, так что кажется, что как COUNT (DISTINCT) отсчеты плохо, и экспорт результатов плох.
Я думаю, что это Афина ошибка - я подал билет с командой разработчиков AWS, чтобы получить это зафиксировано, и будет обновлять этот пост, когда она есть.
Вот ссылка на форум AWS, где другие пользователи видят одни и те же проблемы.
Возможно, что пробел делает кажущееся идентичным md5 на самом деле другим? – James
Я считаю, что все эти вопросы одинаковы. Используйте EXPLAIN для просмотра плана запроса. Я бы предположил и пустое пространство. Попробуйте добавить HAVING count (*)> 1 и вывести to_utf8 (md5), чтобы вы могли увидеть шестнадцатеричное значение строки. –
Я не думаю, что это проблема с пробелами, и я тестировал, используя мысли @ DainSundstrom. Я добавил примечания в конце билета. Очень странно. Другие мысли? –