Databricks, l’entreprise fondée par l’équipe de développeurs à l’origine d’Apache Spark, vient de livrer Delta Lake, une couche de stockage pour Spark qui supporte les transactions ACID (atomicité, cohérence, isolation et durabilité) et d’autres fonctions de gestion de données pour l’apprentissage machine et les projets big data. Le projet open source est accessible sur Github. De nombreuses tâches de traitement des données ont besoin de fonctionnalités telles que les transactions ACID et l’application de schémas pour assurer la cohérence des données, la gestion des métadonnées pour la sécurité et la capacité de travailler avec des versions de données distinctes. Celles-ci n’étant pas fournies en standard avec chaque source de données, Delta Lake vient les apporter pour toute source de données de type Spark DataFrame.
Delta Lake peut être utilisé pour accéder à des systèmes de stockage comme HDFS. Les développeurs pourront stocker (au format Parquet) dans le service de stockage cloud de leur choix les données ainsi ingérées dans Spark. Pour accéder au jeu d’API de Delta Lake, ils passeront par Java, Python ou Scala.
Spark SQL DataFrame et Structured Streaming supportés
La plupart des fonctions Spark SQL DataFrame sont ici supportées pour lire et écrire les données, de même que Spark Structured Streaming comme source ou destination, à l’exception de l’API DStream. Chaque lecture ou écriture faite à travers Delta Lake offre la garantie des propriétés ACID, celles-ci permettant à plusieurs utilisateurs de sérialiser leurs écritures et d’accéder en lecture aux snapshots de façon cohérente. La lecture d’une version particulière d’un jeu de données – ce que la documentation Delta Lake nomme « time travel » – fonctionne par simple lecture d’un DataFrame (une matrice de données) avec l’horodatage ou version ID associé.
Delta Lake garantit aussi que le schéma du DataFrame écrit correspondra à la table pour laquelle il est écrit. S’il y a un problème de correspondance, il signale une exception plutôt que de modifier le schéma (dans de tels cas, les API de fichiers Spark remplaceront la table). Les prochaines versions de Delta Lake devraient supporter davantage l’API publique Spark, mais pour l’instant l’objectif principal porte sur les interfaces DataFrameReader et Writer.