Sardine named a Leader in The Forrester Wave™: Financial Crime Management Solutions, Q3 2026

Learn More

Uso de Golang y Dataflow para crear el Feature Store de IA de Sardine

Kazuki Nishiura
Kazuki Nishiura
bg-image
bg-image
Uso de Golang y Dataflow para crear el Feature Store de IA de Sardine
Subscribe to newsletter
Share

Sardine es como Looker para el fraude”. En Sardine, estamos creando la mayor tienda de características de fraude y delitos financieros del mundo, para permitir que los equipos de fraude y cumplimiento puedan crear y hacer backtesting de nuevas reglas en un editor de reglas sin SQL, utilizando las mismas señales avanzadas, posprocesadas y normalizadas que usan nuestros modelos de IA. Lee este artículo para saber cómo estamos construyendo esto.

Imagen

Figura: El editor de reglas sin código de Sardine que permite a un analista de fraude o cumplimiento crear y probar nuevas reglas sin necesidad de conocimientos de SQL. Contamos con más de 1.000 características que se agregan, procesan posteriormente y normalizan mediante un trabajo de DataFlow usando Apache Beam y Go.

Apache Beam es una biblioteca de código abierto para el procesamiento de datos. En Sardine usamos Dataflow de GCP como ejecutor de nuestro trabajo de Beam para realizar una variedad de tareas de procesamiento de datos.

Nuestros trabajos están mayormente escritos en Java, ya que es el lenguaje con mejor soporte por parte de la comunidad de Apache Beam. Sin embargo, Beam también admite Python y Go. Aunque Dataflow solo admite oficialmente Java y Python, aún puedes usar Dataflow como ejecutor para tus trabajos en Go.

Imagen

Usamos golang para los servidores de backend, así que escribir un trabajo de backfill con Beam usando golang nos permitió reutilizar código que usamos para los servidores. En este artículo hablaré sobre un trabajo de backfill que lee los datos maestros desde BigQuery, aplica algo de procesamiento con golang y escribe en una base de datos SQL.

Dado que Dataflow no admite oficialmente golang, no pudimos encontrar muchos materiales en línea. Espero que este artículo ayude a alguien que quiera lograr objetivos similares. Supongo que los lectores ya han revisado la guía oficial de inicio rápido y conocen los conceptos básicos de Beam.

Si quieres ir directamente al código fuente, aquí tienes un enlace a un repositorio de código abierto:

https://github.com/sardine-ai/dataflow-golang-example

El primer problema que enfrentamos fue un error de conflicto de espacio de nombres causado por el SDK de Beam.



Yo informé al equipo de Beam hace aproximadamente una semana, pero no recibí ninguna respuesta de ellos. Resulta que hay una GOLANG_PROTOBUF_REGISTRATION_CONFLICT bandera para ignorar conflictos, así que simplemente puedes pasarla cuando ejecutes un trabajo localmente:



Para ejecutar un trabajo en Dataflow, es un poco más complicado, porque el SDK de Beam compila implícitamente un binario de trabajador por ti. Afortunadamente, existe la opción worker_binary, de modo que puedes compilar tu propio binario y pasárselo a Beam:



Para leer desde BigQuery, Beam ya proporciona una biblioteca, así que solo tienes que hacer lo siguiente:



Para escribir en la base de datos, puedes simplemente escribir tu propio código. Algo a tener en cuenta es que probablemente no quieras estar abriendo y cerrando la conexión a la base de datos para cada ParDo. En su lugar, puedes utilizar un método StartBundle para inicializar la conexión a la base de datos. En golang beam, defines una estructura para ParDo:



Eso es todo. Puedes encontrar un código simplificado de nuestro trabajo en el siguiente repositorio.

https://github.com/sardine-ai/dataflow-golang-example

Si eres un apasionado de los datos y disfrutaste leyendo este artículo, únete a nosotros. Estamos contratando a un ingeniero de datos senior para ayudar a construir y escalar nuestro Feature Store.