0
votes

Snowpipe reçoit le message S3 mais ne le transfère pas

Nous avons configuré l'objet S3 pour créer des notifications à Snowpipe. Il reçoit le message mais ne le transfère pas, de sorte que les données ne sont pas chargées. Lorsque nous exécutons l'instruction COPY INTO manuellement, les données se chargent.

Exemple de sortie de SYSTEM $ PIPE_STATUS:

create or replace pipe my_schema.my_data_pipe
    auto_ingest=true
    aws_sns_topic='arn:aws:sns:us-east-1:[my-account]:my-s3-create-event'
    as
  copy into my_schema.my_table
      from @my_schema.my_pipe
      file_format=(type='PARQUET' compression='SNAPPY')
      match_by_column_name=case_insensitive;

Par https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-ts.html#step-1-check-the-pipe-status :

Si des messages d'événement sont reçus de la file d'attente de messages mais ne sont pas transférés vers le canal, il y a probablement une discordance entre le chemin de stockage Blob où les nouveaux fichiers de données sont créés et le chemin combiné spécifié dans les définitions d'étape et de canal Snowflake

Mais le chemin dans l'étape est le nom du compartiment suivi de / , de sorte que tout fichier créé dans le compartiment doit déclencher un chargement. Et les noms de fichiers sont définitivement nouveaux et uniques (créés par Kinesis Firehose). La définition de la scène:

CREATE STAGE if not exists my_stage URL = 's3://my-stage/'
    CREDENTIALS = (AWS_KEY_ID = 'XXX' AWS_SECRET_KEY = 'XXX');

La définition du tuyau:

{
    "executionState": "RUNNING",
    "lastReceivedMessageTimestamp": "2020-03-18T14:14:48.69Z",
    "notificationChannelName": "arn:aws:sqs:us-east-1:[clipped]:[clipped]",
    "numOutstandingMessagesOnChannel": 0,
    "pendingFileCount": 0
}

Notez également que lorsque nous actualisons le tube, les données se chargent: alter pipe my_schema.my_pipe refresh;

Qu'est-ce qui pourrait empêcher Snowpipe de transférer le message de création S3 et de déclencher le chargement?


0 commentaires

3 Réponses :


1
votes

Votre COPY dans pipe create sql est mauvais, remplacez-le par:

copy into my_db. my_schema.my_table
  from @my_db. my_schema.my_stage


0 commentaires

0
votes

La configuration de snowpipe avec SNS est un peu compliquée. Veuillez vous assurer de suivre ces étapes: https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-auto-s3.html#option-2-configuring-amazon-sns-to-automate-snowpipe -utilisation-de-notifications-sqs

Cela ne fonctionne toujours pas, veuillez contacter l'assistance Snowflake.

PS. Notez que ALTER PIPE REFRESH n'utilise pas les notifications S3 pour charger les données. Il répertorie simplement tous les fichiers de la scène et exécute COPY pour tous ces fichiers.


0 commentaires

0
votes

vous pouvez essayer d'exécuter ce qui suit (si vous ne l'avez pas déjà fait) pour voir s'il y a des erreurs répertoriées du côté Snowflake:

SYSTEM$PIPE_STATUS( '<pipe_name>' )

Certaines autres idées peuvent également valoir la peine d'être examinées: https://docs.snowflake.com/en/user-guide/data-load-snowpipe-ts.html#automatically-loading-data-using-cloud-storage- notifications d'événements

Mais si vous pouvez partager des erreurs, d'autres peuvent fournir des commentaires / idées à partir de là.


0 commentaires