Migrez les pipelines ETL vers Databricks
Cet article fournit une vue d'ensemble des options de migration des pipelines de données d'extraction, de transformation et de chargement (ETL) s'exécutant sur d'autres systèmes de données vers Databricks. Si vous migrez du code Apache Spark, consultez Adaptez votre code Apache Spark existant pour Databricks.
Pour des informations générales sur la migration d'un data warehouse d'entreprise vers un lakehouse, consultez Migrer votre data warehouse vers le lakehouse Databricks. Pour plus d'informations sur la migration de Parquet vers Delta Lake, consultez Migrer un data lake Parquet vers Delta Lake.
Pouvez-vous exécuter des pipelines Hive sur Databricks ?
La plupart des charges de travail Hive peuvent être exécutées sur Databricks avec un remaniement minimal. La version de Spark SQL prise en charge par Databricks Runtime permet de nombreuses constructions HiveQL. Voir compatibilité Apache Hive. Databricks inclut un Hive metastore par default. La plupart des migrations Hive doivent répondre à quelques préoccupations principales :
- Hive SerDe doit être mis à jour pour utiliser les codecs de fichiers natifs de Databricks. (Changez le DDL de
STORED ASàUSINGpour utiliser Databricks SerDe.) - Les UDFs Hive doivent être installées dans des clusters en tant que bibliothèques ou refactorisées vers Spark natif. Puisque les UDFs Hive sont déjà dans la JVM, elles pourraient offrir des performances suffisantes pour de nombreuses charges de travail. Consultez les Considérations sur les performances.
- La structure de répertoire des tables devrait être modifiée, car Databricks utilise les partitions différemment d'Hive. Voir Quand partitionner les tables sur Databricks.
Si vous choisissez de mettre à jour vos tables vers Delta Lake lors de votre migration initiale, un certain nombre d'instructions DDL et DML ne sont pas prises en charge. Sont concernés :
ROWFORMATSERDEOUTPUTFORMATINPUTFORMATCOMPRESSIONSTORED ASANALYZE TABLE PARTITIONALTER TABLE [ADD|DROP] PARTITIONALTER TABLE RECOVER PARTITIONSALTER TABLE SET SERDEPROPERTIESCREATE TABLE LIKEINSERT OVERWRITE DIRECTORYLOAD DATA- Spécifier les partitions cibles à l'aide de
PARTITION (part_spec)dansTRUNCATE TABLE
Pouvez-vous exécuter des pipelines SQL ETL sur Databricks ?
La migration des charges de travail SQL d'autres systèmes vers Databricks nécessite généralement très peu de refactoring, selon la mesure dans laquelle des protocoles spécifiques au système ont été utilisés dans le code source. Databricks utilise Delta Lake comme format de table par default. Les tables sont donc créées avec des garanties transactionnelles par default.
Spark SQL est généralement conforme à la norme ANSI, mais des différences de comportement peuvent exister. Voir Comment la Databricks Data Intelligence Platform est-elle différente d'un data warehouse d'entreprise ?.
Étant donné que les systèmes de données ont tendance à configurer l'accès aux données externes différemment, une grande partie du travail de refonte des pipelines ETL SQL pourrait consister à configurer l'accès à ces sources de données, puis à mettre à jour votre logique pour utiliser ces nouvelles connexions. Databricks offre des options pour se connecter à de nombreuses sources de données pour l’ingestion.
Pouvez-vous exécuter des pipelines dbt ETL sur Databricks ?
Databricks propose une intégration native avec dbt, vous permettant de tirer parti des scripts dbt existants avec très peu de refactorisation.
Les LakeFlow Pipelines offrent une syntaxe SQL déclarative optimisée et native de Databricks pour créer, tester et déployer des pipelines. Bien que vous puissiez tirer parti de dbt sur Databricks, un léger refactoring du code vers les LakeFlow Pipelines pourrait réduire votre coût total d'exploitation de vos pipelines sur Databricks. See Spark Declarative Pipelines.
Pouvez-vous migrer des fonctions cloud Serverless vers Databricks ?
L'extensibilité et la polyvalence des fonctions cloud Serverless personnalisées rendent difficile la formulation d'une recommandation commune, mais l'un des cas d'utilisation les plus courants pour ces fonctions est l'attente que des fichiers ou des données apparaissent dans un emplacement ou une file d'attente de messages, puis l'exécution d'une action en conséquence. Bien que Databricks ne prenne pas en charge la logique complexe pour le déclenchement de charges de travail basées sur les conditions du cloud, vous pouvez utiliser Structured Streaming conjointement avec des tâches pour traiter les données de manière incrémentielle.
Utilisez Auto Loader pour une ingestion de données optimisée à partir du stockage d'objets cloud. Structured Streaming peut traiter les données provenant de sources de streaming en temps quasi réel.
Pouvez-vous exécuter la syntaxe d'autres systèmes de données sur Databricks ?
Les pipelines ETL définis dans des langages autres que SQL, Apache Spark ou Hive pourraient nécessiter une refactorisation importante avant d'être exécutées sur Databricks. Databricks possède l'expérience d'aider les clients à migrer depuis la plupart des systèmes de données utilisés aujourd'hui, et pourrait avoir des ressources disponibles pour accélérer vos efforts de migration.