2017-02-01 29 views
4

У меня есть куча файлов на 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, где другие пользователи видят одни и те же проблемы.

+0

Возможно, что пробел делает кажущееся идентичным md5 на самом деле другим? – James

+0

Я считаю, что все эти вопросы одинаковы. Используйте EXPLAIN для просмотра плана запроса. Я бы предположил и пустое пространство. Попробуйте добавить HAVING count (*)> 1 и вывести to_utf8 (md5), чтобы вы могли увидеть шестнадцатеричное значение строки. –

+0

Я не думаю, что это проблема с пробелами, и я тестировал, используя мысли @ DainSundstrom. Я добавил примечания в конце билета. Очень странно. Другие мысли? –

ответ

2

Я подтвердил с командой AWS, что это была известная ошибка с AWS Athena в то время, когда был задан вопрос. Я не уверен, что это было разрешено.