2
votes

Automatisez le chargement de fichiers de s3 à flocon de neige

Dans le s3 bucket chaque jour, de nouveaux fichiers JSON sont vidés, je dois créer une solution qui sélectionne le dernier fichier lorsqu'il arrive PARSE le JSON et le charge dans Snowflake Datawarehouse. quelqu'un peut-il partager vos réflexions comment pouvons-nous y parvenir


0 commentaires

4 Réponses :


3
votes

Il existe plusieurs façons de procéder en fonction de vos besoins. Je suggérerais de créer un événement pour déclencher une fonction lambda.

https://docs.aws.amazon.com /lambda/latest/dg/with-s3.html

Une autre option peut être de créer un message SQS lorsque le fichier arrive sur s3 et de demander à une instance ec2 d'interroger la file d'attente et de traiter si nécessaire.

https://docs.aws.amazon.com/AmazonS3 /latest/dev/NotificationHowTo.html https: //boto3.amazonaws. com / v1 / documentation / api / latest / guide / sqs-example-long-polling.html

edit: Voici une explication plus détaillée sur la façon de créer des événements à partir de s3 et de déclencher des fonctions lambda. La documentation est fournie par Snowflake

https: //docs.snowflake .net / manuels / guide-utilisateur / data-load-snowpipe-rest-lambda.html


1 commentaires

@akhrot j'ai mis à jour ma réponse avec un exemple de flocon de neige



0
votes

Regardez dans Snowpipe , cela vous permet faites cela dans le système, ce qui rend (peut-être) beaucoup plus facile.


2 commentaires

pouvez-vous s'il vous plaît partager un lien qui montre le chargement des données de s3 vers snowflake chaque fois qu'un nouveau fichier arrive dans s3 bucket. Merci beaucoup,


C'est le processus que nous utilisons - snowpipe configurera automatiquement une file d'attente SQS pour vous que vous pouvez utiliser en combinaison avec un déclencheur d'événement s3 pour charger les données dans une table. Fonctionne comme un rêve pour nous! voici un très bon article de blog à ce sujet: snowflake.com/blog / vos-premiers pas-avec-snowpipe



0
votes

Il y a certains aspects à prendre en compte, tels que s'agit-il d'un traitement par lots ou de données en continu, voulez-vous réessayer de charger le fichier au cas où les données ou le format ne seraient pas corrects ou voulez-vous en faire un processus générique pour pouvoir gérer différents formats de fichiers / types de fichiers (csv / json) et étapes. Dans notre cas, nous avons construit un chargement s3 générique vers Snowflake en utilisant Python et Luigi et avons également implémenté la même chose en utilisant SSIS mais pour le fichier csv / txt uniquement.


1 commentaires

Le format de fichier est JSON et sa structure reste toujours la même, en cas d'erreur, j'essaie d'implémenter le déclenchement par e-mail. Mon objectif final est donc de charger le fichier du seau s3 vers l'entrepôt de données Snowflake. s'il vous plaît aidez-moi si vous avez une solution



0
votes

Dans mon cas, j'ai un script python qui récupère des informations sur le bucket avec boto .

Une fois que j'ai détecté un changement, j'appelle les fichiers d'insertion de point final REST sur SnowPipe.

Mise en phase:

  • détecter le changement S3
  • obtenir le chemin de l'objet S3
  • analyser le contenu et le transformer en CSV dans S3 (le même compartiment ou un autre snowpipe peut se connecter)
  • Appeler l'API REST SnowPipe

Ce dont vous avez besoin:

  • Créer un utilisateur avec une clé publique
  • Créez votre scène sur SnowFlake avec les informations d'identification AWS afin d'accéder à S3
  • Créez votre pipe sur Snowflake avec votre rôle d'utilisateur
  • Signer un JWT

J'ai également essayé avec un job Talend avec TOS BigData.

J'espère que cela aide.


0 commentaires