Annoncé le 31 juillet par l’Apache Flink Project Management Committee (PMC), Flink 2.1.0 est une mise à jour majeure du moteur de traitement de données en temps réel. Désormais, il supportera la définition et la gestion des modèles d'IA et leur invocation en temps réel au sein de Flink SQL. Selon l’organisme, cette dernière fonctionnalité jette les bases de la création de flux d'IA en temps réel de bout en bout.
Concernant l'IA, Apache Flink 2.1 ajoute le support de l'API Table DDL (Data Definition Language), qui propose aux utilisateurs de définir et de gérer des modèles d'IA de manière programmatique via l'API Table en Java et en Python. Cette option flexible apporte une alternative au code SQL pour la gestion et l'intégration des modèles dans les applications Flink. De plus, selon le comité, la fonction Table-Valued Function (TVF) ML_PREDICT a été étendue de façon à pouvoir effectuer une inférence de modèle en temps réel dans les requêtes SQL, en appliquant des modèles de machine learning à des flux de données de manière transparente. « L'implémentation prend en charge à la fois les fournisseurs de modèles intégrés à Flink (OpenAI) et les interfaces permettant aux utilisateurs de définir des fournisseurs de modèles personnalisés, accélérant ainsi l'évolution du moteur de traitement de données en temps réel Flink vers une plateforme d'IA unifiée en temps réel », a ajouté le comité.
« Avec la version 2.1, Flink prend désormais en charge les Process Table Functions (PTF), le type de fonction le plus puissant pour Flink SQL et Table API », a aussi déclaré le comité. Conceptuellement, une PTF est un sur-ensemble de toutes les autres fonctions définies par l'utilisateur, mettant en correspondance zéro, une ou plusieurs tables avec zéro, une ou plusieurs lignes. « Il est possible de mettre en œuvre des opérateurs définis par l'utilisateur qui peuvent être aussi riches en fonctionnalités que les opérations intégrées. », selon l’organisme. Les PTF ont accès à l'état géré de Flink, à l'heure des événements, aux journaux de changement de table et aux services de temporisation.
D’autres évolutions
Flink 2.1 inclut également VARIANT comme type de données pour les données semi-structurées telles que JSON. Ce type stocke toutes les données semi-structurées, y compris les types ARRAY, MAP (avec des clés STRING) et scalaire, tout en préservant les informations de type de champ dans une structure de type JSON. Contrairement aux types ROW et STRUCTURED, VARIANT offre une flexibilité supérieure pour gérer des schémas profondément imbriqués et évolutifs. Les utilisateurs peuvent utiliser PARSE_JSON ou TRY_PARSE_JSON pour convertir des données VARCHAR formatées JSON en VARIANT.
Autres apports de la mise à jour Apache Flink 2.1 :
- Un opérateur DeltaJoin a été introduit dans les tâches de traitement de flux, ainsi que des optimisations pour un pipeline de jointure en flux simple.
- Le support du format binaire Smile a été ajouté pour les plans compilés, ce qui offre une alternative efficace en mémoire à JSON pour la sérialisation et la désérialisation.
- Pour le runtime, un mécanisme pluggable de batching pour Async Sink a été introduit, ce qui permet aux utilisateurs de définir des stratégies d'écriture de batching personnalisées, adaptées à des besoins spécifiques.
- Grâce à un nouveau connecteur pour l'état des clés, les utilisateurs peuvent interroger l'état des clés directement à partir d'un point de contrôle ou d'un point de sauvegarde à l'aide de Flink SQL, ce qui facilite l'inspection, le débogage et la validation de l'état des travaux Flink sans outil personnalisé.