J'ai un seau s3 contenant environ 300 Go de fichiers journaux dans aucun ordre particulier. Je souhaite partitionner ces données pour les utiliser dans hadoop-hive en utilisant un horodatage afin que les log-lines liées à un jour particulier soient regroupées dans le même «dossier» s3. Par exemple les entrées du journal pour le 1er Janvier serait dans les fichiers correspondant à la dénomination suivante:Comment dois-je partitionner les données dans s3 pour les utiliser avec hadoop ruche?
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
etc
Quelle serait la meilleure façon pour moi de transformer les données? Suis-je le meilleur simplement en exécutant un seul script qui lit dans chaque fichier à la fois et les données de sorties à l'emplacement s3 droit?
Je suis sûr qu'il ya une bonne façon de le faire en utilisant Hadoop, quelqu'un pourrait me dire ce qui est?
Ce que j'ai essayé:
J'ai essayé d'utiliser Hadoop streaming en passant dans un mappeur qui a recueilli toutes les entrées du journal pour chaque date, puis écrit ceux qui sont directement à S3, rien de retour pour le réducteur, mais semblait créer des doublons. (en utilisant l'exemple ci-dessus, j'ai fini avec 2,5 millions d'entrées pour le 1er janvier au lieu de 1,4 million)
Quelqu'un a-t-il des idées sur la meilleure façon d'aborder cela?