Logotipo de Zephyrnet

Mejore su arquitectura de datos con transmisión en tiempo real utilizando Amazon Data Firehose y Snowflake | Servicios web de Amazon

Fecha:

El acelerado mundo actual exige conocimientos y decisiones oportunas, lo que está impulsando la importancia de la transmisión de datos. La transmisión de datos se refiere a datos que se generan continuamente a partir de una variedad de fuentes. Las fuentes de estos datos, como los eventos de secuencia de clics, la captura de datos modificados (CDC), los registros de aplicaciones y servicios y los flujos de datos de Internet de las cosas (IoT), están proliferando. Snowflake ofrece dos opciones para incorporar datos de transmisión a su plataforma: Snowpipe y Snowflake Snowpipe Streaming. Snowpipe es adecuado para casos de uso de ingesta de archivos (procesamiento por lotes), como cargar archivos grandes desde Servicio de almacenamiento simple de Amazon (Amazon S3) a Copo de nieve. Snowpipe Streaming, una característica más nueva lanzada en marzo de 2023, es adecuada para casos de uso de ingesta (transmisión) de conjuntos de filas, como cargar un flujo continuo de datos desde Secuencias de datos de Amazon Kinesis or Streaming administrado por Amazon para Apache Kafka (Amazon MSK).

Antes de Snowpipe Streaming, los clientes de AWS usaban Snowpipe para ambos casos de uso: ingesta de archivos e ingesta de conjuntos de filas. Primero, ingirió datos de transmisión en Kinesis Data Streams o Amazon MSK, luego usó Amazon Data Firehose para agregar y escribir transmisiones en Amazon S3, y luego usó Snowpipe para cargar los datos en Snowflake. Sin embargo, este proceso de varios pasos puede provocar retrasos de hasta una hora antes de que los datos estén disponibles para su análisis en Snowflake. Además, es costoso, especialmente cuando tienes archivos pequeños que Snowpipe debe cargar en el grupo de clientes de Snowflake.

Para resolver este problema, Amazon Data Firehose ahora se integra con Snowpipe Streaming, lo que le permite capturar, transformar y entregar flujos de datos desde Kinesis Data Streams, Amazon MSK y Firehose Direct PUT a Snowflake en segundos a un bajo costo. Con unos pocos clics en la consola de Amazon Data Firehose, puede configurar una transmisión de Firehose para entregar datos a Snowflake. No existen compromisos ni inversiones iniciales para utilizar Amazon Data Firehose y solo paga por la cantidad de datos transmitidos.

Algunas características clave de Amazon Data Firehose incluyen:

  • Servicio sin servidor totalmente administrado – No necesita administrar recursos y Amazon Data Firehose escala automáticamente para igualar el rendimiento de su fuente de datos sin administración continua.
  • Fácil de usar sin código – No es necesario escribir aplicaciones.
  • Entrega de datos en tiempo real – Puede llevar datos a sus destinos de forma rápida y eficiente en segundos.
  • Integración con más de 20 servicios de AWS – La integración perfecta está disponible para muchos servicios de AWS, como Kinesis Data Streams, Amazon MSK, Amazon VPC Flow Logs, registros de AWS WAF, Amazon CloudWatch Logs, Amazon EventBridge, AWS IoT Core y más.
  • Modelo de pago por uso – Solo paga por el volumen de datos que procesa Amazon Data Firehose.
  • Conectividad – Amazon Data Firehose puede conectarse a subredes públicas o privadas en su VPC.

Esta publicación explica cómo puede llevar datos de streaming desde AWS a Snowflake en cuestión de segundos para realizar análisis avanzados. Exploramos arquitecturas comunes e ilustramos cómo configurar una solución rentable, sin servidor y de bajo código para la transmisión de datos de baja latencia.

Resumen de la solución

Los siguientes son los pasos para implementar la solución para transmitir datos desde AWS a Snowflake:

  1. Cree una base de datos, un esquema y una tabla de Snowflake.
  2. Cree un flujo de datos de Kinesis.
  3. Cree una secuencia de entrega de Firehose con Kinesis Data Streams como origen y Snowflake como destino mediante un vínculo privado seguro.
  4. Para probar la configuración, genere datos de flujo de muestra desde el Generador de datos de Amazon Kinesis (KDG) con el flujo de entrega de Firehose como destino.
  5. Consulta la tabla Snowflake para validar los datos cargados en Snowflake.

La solución se muestra en el siguiente diagrama de arquitectura.

Requisitos previos

Debe tener los siguientes requisitos previos:

Cree una base de datos, un esquema y una tabla de Snowflake

Complete los siguientes pasos para configurar sus datos en Snowflake:

  • Inicie sesión en su cuenta Snowflake y cree la base de datos:
    create database adf_snf;

  • Cree un esquema en la nueva base de datos:
    create schema adf_snf.kds_blog;

  • Cree una tabla en el nuevo esquema:
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Crear un flujo de datos de Kinesis

Complete los siguientes pasos para crear su flujo de datos:

  • En la consola de Kinesis Data Streams, elija Flujos de datos en el panel de navegación.
  • Elige Crear flujo de datos.
  • En Nombre del flujo de datos, ingrese un nombre (por ejemplo, KDS-Demo-Stream).
  • Deje las configuraciones restantes como predeterminadas.
  • Elija Crear flujo de datos.

Crear una secuencia de entrega de Firehose

Complete los siguientes pasos para crear una secuencia de entrega de Firehose con Kinesis Data Streams como origen y Snowflake como destino:

  • En la consola de Amazon Data Firehose, elija Crear flujo de Firehose.
  • Fuente, escoger Secuencias de datos de Amazon Kinesis.
  • Destino, escoger Copo de nieve.
  • Flujo de datos de Kinesis, busque el flujo de datos que creó anteriormente.
  • Nombre del arroyo de manguera contra incendios, deje el nombre generado por defecto o ingrese un nombre de su preferencia.
  • under Ajustes de conexión, proporcione la siguiente información para conectar Amazon Data Firehose a Snowflake:
    • URL de la cuenta de Snowflake, ingrese la URL de su cuenta Snowflake.
    • Usuario, ingrese el nombre de usuario generado en los requisitos previos.
    • Llave privada, ingrese la clave privada generada en los requisitos previos. Asegúrese de que la clave privada esté en formato PKCS8. No incluye el PEM header-BEGIN prefijo y footer-END sufijo como parte de la clave privada. Si la clave está dividida en varias líneas, elimine los saltos de línea.
    • Función, seleccione Usar el rol personalizado de Snowflake e ingrese el rol de IAM que tiene acceso para escribir en la tabla de la base de datos.

Puede conectarse a Snowflake mediante conectividad pública o privada. Si no proporciona un punto de enlace de VPC, el modo de conectividad predeterminado es público. Para permitir la lista de IP de Firehose en su política de red de Snowflake, consulte Elija Snowflake para su destino. Si está utilizando una URL de enlace privado, proporcione el ID de VPCE usando SISTEMA$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

Esta función devuelve una representación JSON de la información de la cuenta Snowflake necesaria para facilitar la configuración de autoservicio de conectividad privada al servicio Snowflake, como se muestra en la siguiente captura de pantalla.

  • Para esta publicación, estamos usando un enlace privado, por lo que para ID de VPCE, ingrese el ID de VPCE.
  • under Ajustes de configuración de la base de datos, ingrese los nombres de la base de datos, el esquema y las tablas de Snowflake.
  • En Configuración de copia de seguridad sección, para Cubo de copia de seguridad de S3, ingrese el depósito que creó como parte de los requisitos previos.
  • Elige Crear flujo de Firehose.

Alternativamente, puede utilizar un Formación en la nube de AWS plantilla para crear el flujo de entrega de Firehose con Snowflake como destino en lugar de utilizar la consola de Amazon Data Firehose.

Para utilizar la pila de CloudFormation, elija

Pila de lanzamiento BDB-4100-CFN

Generar datos de flujo de muestra
Genere datos de flujo de muestra desde KDG con el flujo de datos de Kinesis que creó:

{ 
"sensorId": {{random.number(999999999)}}, 
"sensorType": "{{random.arrayElement( ["Thermostat","SmartWaterHeater","HVACTemperatureSensor","WaterPurifier"] )}}", 
"internetIP": "{{internet.ip}}", 
"connectionTime": "{{date.now("YYYY-MM-DDTHH:m:ss")}}", 
"currentTemperature": {{random.number({"min":10,"max":150})}} 
}

Consultar la tabla Snowflake

Consulta la tabla Snowflake:

select * from adf_snf.kds_blog.iot_sensors;

Puede confirmar que los datos generados por el KDG que se envió a Kinesis Data Streams se cargan en la tabla Snowflake a través de Amazon Data Firehose.

Solucionando Problemas

Si los datos no se cargan en Kinesis Data Steams después de que KDG envíe datos al flujo de entrega de Firehose, actualice y asegúrese de haber iniciado sesión en KDG.

Si realizó algún cambio en la definición de la tabla de destino de Snowflake, vuelva a crear el flujo de entrega de Firehose.

Limpiar

Para evitar incurrir en cargos futuros, elimine los recursos que creó como parte de este ejercicio si no planea utilizarlos más.

Conclusión

Amazon Data Firehose proporciona una forma sencilla de entregar datos a Snowpipe Streaming, lo que le permite ahorrar costos y reducir la latencia a segundos. Para probar Amazon Kinesis Firehose con Snowflake, consulte el laboratorio de Amazon Data Firehose con Snowflake como destino.


Acerca de los autores

Swapna Bandla es arquitecto de soluciones senior en el equipo SA de AWS Analytics Specialist. A Swapna le apasiona comprender las necesidades de análisis y datos de los clientes y capacitarlos para desarrollar soluciones bien diseñadas basadas en la nube. Fuera del trabajo, le gusta pasar tiempo con su familia.

Mostafa Mansur es Gerente Principal de Producto - Tecnología en Amazon Web Services, donde trabaja en Amazon Kinesis Data Firehose. Se especializa en desarrollar experiencias de productos intuitivas que resuelven desafíos complejos para los clientes a escala. Cuando no está trabajando arduamente en Amazon Kinesis Data Firehose, probablemente encontrará a Mostafa en la cancha de squash, donde le encanta enfrentarse a los retadores y perfeccionar sus lanzamientos.

Bosco Alburquerque es Arquitecto sénior de soluciones de socios en AWS y tiene más de 20 años de experiencia trabajando con productos de análisis y bases de datos de proveedores de bases de datos empresariales y proveedores de la nube. Ha ayudado a empresas de tecnología a diseñar e implementar soluciones y productos de análisis de datos.

punto_img

Información más reciente

punto_img