Comment convertir des fichiers CSV et journaux en un format en colonnes

Les formats en colonnes, tels qu'Apache Parquet, offrent d'importantes économies de compression et sont beaucoup plus faciles à numériser, traiter et analyser que d'autres formats tels que CSV. Dans cet article, nous vous montrons comment convertir vos données CSV en parquet à l'aide d'AWS Glue.

Qu'est-ce qu'un format en colonnes ?

Les fichiers CSV, les fichiers journaux et tout autre fichier délimité par des caractères stockent tous efficacement les données dans des colonnes. Chaque ligne de données a un certain nombre de colonnes, toutes séparées par le délimiteur, comme des virgules ou des espaces. Mais sous le capot, ces formats ne sont encore que des lignes de chaînes. Il n'y a pas de moyen simple d'analyser une seule colonne d'un fichier CSV.

Cela peut être un problème avec des services comme AWS Athena, qui sont capables d'exécuter des requêtes SQL sur des données stockées dans CSV et autres fichiers délimités. Même si vous n'interrogez qu'une seule colonne, Athena doit analyser l'intégralité du contenu du fichier. Les seuls frais d'Athena sont le Go de données traitées, donc augmenter la facture en traitant des données inutiles n'est pas la meilleure idée.

La solution est un vrai format en colonnes. Les formats en colonnes stockent les données dans des colonnes, un peu comme une base de données relationnelle traditionnelle. Les colonnes sont stockées ensemble et les données sont beaucoup plus homogènes, ce qui les rend plus faciles à compresser. Ils ne sont pas exactement lisibles par l'homme, mais ils sont parfaitement compris par l'application qui les traite. En fait, comme il y a moins de données à analyser, elles sont beaucoup plus faciles à traiter.

Comme Athena n'a qu'à analyser une colonne pour effectuer une sélection par colonne, cela réduit considérablement les coûts, en particulier pour les ensembles de données plus volumineux. Si vous avez 10 colonnes dans chaque fichier et que vous n'en scannez qu'une, cela représente une économie de 90 % rien qu'en passant à Parquet.

Convertir automatiquement en utilisant Colle AWS

AWS Glue est un outil d'Amazon qui convertit les ensembles de données entre les formats. Il est principalement utilisé dans le cadre d'un pipeline pour traiter les données stockées dans des formats délimités et autres, et les injecte dans des bases de données pour une utilisation dans Athena. Bien qu'il puisse être configuré pour être automatique, vous pouvez également l'exécuter manuellement, et avec quelques ajustements, il peut être utilisé pour convertir des fichiers CSV au format Parquet.

Publicité

Rendez-vous sur AWS Glue Console et sélectionnez “Commencer”. Dans la barre latérale, cliquez sur “Ajouter un robot d'exploration” et créez un nouveau robot d'exploration. Le robot d'exploration est configuré pour rechercher des données à partir de compartiments S3 et importer les données dans une base de données à utiliser dans la conversion.

Donnez un nom à votre robot d'exploration et choisissez d'importer des données à partir d'un magasin de données. Sélectionnez S3 (bien que DynamoDB soit une autre option) et entrez le chemin d'accès à un dossier contenant vos fichiers. Si vous n'avez qu'un seul fichier à convertir, placez-le dans son propre dossier.

Ensuite, vous êtes invité à créer un rôle IAM pour votre robot d'exploration. Créez le rôle, puis choisissez-le dans la liste. Vous devrez peut-être appuyer sur le bouton d'actualisation à côté pour qu'il apparaisse.

Choisissez un base de données vers laquelle le robot d'exploration doit sortir ; si vous avez déjà utilisé Athena, vous pouvez utiliser votre base de données personnalisée, mais sinon celle par défaut devrait fonctionner correctement.

Si vous souhaitez automatiser le processus, vous pouvez donner à votre robot un calendrier pour qu'il s'exécute régulièrement. Sinon, choisissez le mode manuel et exécutez-le vous-même depuis la console.

Publicité

Une fois qu'il est créé, lancez le robot d'exploration pour importer les données dans la base de données que vous avez choisie. Si tout a fonctionné, vous devriez voir votre fichier importé avec le bon schéma. Les types de données pour chaque colonne sont attribués automatiquement en fonction de l'entrée source.

Une fois vos données dans le système AWS, vous pouvez les convertir. À partir de la console Glue, passez à l'onglet “Jobs” onglet et créez une nouvelle tâche. Donnez-lui un nom, ajoutez votre rôle IAM et sélectionnez “Un script proposé généré par AWS Glue” en fonction de l'exécution du travail.

Sélectionnez votre tableau sur l'écran suivant, puis choisissez &# 8220;Modifier le schéma” pour spécifier que ce travail exécute une conversion.

Ensuite, vous devez sélectionner “Créer des tables dans votre cible de données”, spécifier Parquet comme format et entrer un nouveau chemin cible. Assurez-vous qu'il s'agit d'un emplacement vide sans aucun autre fichier.

Ensuite, vous pouvez modifier le schéma de votre fichier. Il s'agit par défaut d'un mappage un-à-un des colonnes CSV aux colonnes Parquet, ce qui est probablement ce que vous voulez, mais vous pouvez le modifier si vous en avez besoin.

Créez le travail, et vous serez amené à une page qui vous permet de modifier le script Python qu'il exécute. Le script par défaut devrait fonctionner correctement, alors appuyez sur “Enregistrer” et revenez à l'onglet Tâches.

Publicité

Dans nos tests, le script a toujours échoué à moins que le rôle IAM n'ait reçu l'autorisation spécifique d'écrire à l'emplacement auquel nous avons spécifié la sortie. Vous devrez peut-être modifier manuellement les autorisations à partir de la console de gestion IAM si vous rencontrez le même problème.

Sinon, cliquez sur “Exécuter” et votre script devrait démarrer. Le traitement peut prendre une minute ou deux, mais vous devriez voir l'état dans le panneau d'informations. Une fois terminé, vous verrez un nouveau fichier créé dans S3.

Ce travail peut être configuré pour s'exécuter à partir des déclencheurs définis par le robot qui importe les données, de sorte que l'ensemble processus peut être automatisé du début à la fin. Si vous importez les journaux du serveur vers S3 de cette façon, cela peut être une méthode simple pour les convertir dans un format plus utilisable.


Posted

in

by

Tags: