У меня есть корзина s3, содержащая около 300 ГБ файлов журналов в произвольном порядке.
Я хочу разделить эти данные для использования в Hadoop-Hive, используя отметку даты и времени, чтобы строки журнала, относящиеся к определенному дню, объединялись в одну и ту же «папку» s3. Например, записи журнала за 1 января будут в файлах, соответствующих следующему имени:
s3://bucket1/partitions/created_date=2010-01-01/file1
s3://bucket1/partitions/created_date=2010-01-01/file2
s3://bucket1/partitions/created_date=2010-01-01/file3
и т.д.
Каков был бы лучший способ для меня преобразовать данные? Мне лучше всего запустить один скрипт, который читает каждый файл за раз и выводит данные в нужное место s3?
Я уверен, что есть хороший способ сделать это, используя hadoop, может кто-нибудь сказать мне, что это такое?
Что я пробовал:
Я попытался использовать потоковую передачу hadoop, передав маппер, который собирал все записи журнала для каждой даты, а затем записывал их непосредственно в S3, ничего не возвращая для редуктора, но это, казалось, создавало дубликаты. (используя приведенный выше пример, я получил 2,5 миллиона записей на 1 января вместо 1,4 миллиона)
У кого-нибудь есть идеи, как лучше к этому подойти?