Snowpipe Streaming : meilleures pratiques

Optimisation des coûts

Comme meilleure pratique, nous recommandons d’appeler le API avec moins de clients qui écrivent plus de données par seconde. Agrégez des données provenant de plusieurs sources telles que des IoT dispositifs ou des capteurs à l’aide d’une application Java ou Scala, puis appelez le API pour charger les données à l’aide du SDK Snowflake Ingest à des débits plus élevés. Le API regroupe efficacement les données de plusieurs tables cibles dans un compte.

L’utilisation des mêmes tables pour l’ingestion par lots et par streaming peut également entraîner une réduction des coûts de calcul de Snowpipe Streaming en raison d’opérations de migration de fichiers anticipées.

Recommandations sur les performances

Pour des performances optimales dans les déploiements à haut débit, nous recommandons les actions suivantes :

  • Transmettez les valeurs des colonnes TIME, DATE et toutes les colonnes TIMESTAMP comme l’un des types pris en charge du package java.time.

  • Lors de la création d’un canal à l’aide de OpenChannelRequest.builder, définissez OnErrorOption sur OnErrorOption.CONTINUE et vérifiez manuellement la valeur de retour de insertRows pour les erreurs d’ingestion potentielles. Cette approche conduit actuellement à de meilleures performances qu’en s’appuyant sur des exceptions levées lors de l’utilisation de OnErrorOption.ABORT.

  • Si vous chargez plusieurs lignes, l’utilisation de insertRows sera plus performante et plus rentable que d’appeler insertRow plusieurs fois, car il y a moins de temps passé sur les verrous.

  • Lorsque vous définissez le niveau de journalisation par défaut sur DEBUG, assurez-vous que les enregistreurs suivants continuent de journaliser sur INFO. En effet, la sortie DEBUG est très verbeuse, ce qui peut entraîner une dégradation importante des performances.

    • net.snowflake.ingest.internal.apache.parquet

    • org.apache.parquet