Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API de source de données Spark vous permet de lire et d’écrire dans des bases de données externes directement à partir de Azure Databricks. Utilisez-la uniquement lorsque vous avez besoin de la flexibilité totale du moteur Spark, que vous souhaitez exécuter des requêtes natives sur la source ou que vous avez besoin d’un accès en écriture aux systèmes externes. En règle générale, Azure Databricks recommande un accès gouverné en lecture seule avec pushdown automatique des requêtes Spark ou SQL. Voir Qu’est-ce que la fédération de requêtes ?.
L’API de source de données Spark a des comportements spécifiques pour la connectivité, l’exécution des requêtes et la détection de schéma.
- La charge de travail principale et toutes les transformations Spark suivantes s’exécutent sur le cluster Azure Databricks Spark.
- Lorsque vous utilisez l’option
query, l’instruction SQL spécifiée s’exécute entièrement sur la source de données externe. Spark récupère les résultats sans effectuer de pushdown de transformation sur la chaîne de requête. - La connexion nécessite un connecteur Azure Databricks groupé, un pilote JDBC fourni par l’utilisateur ou une source de données personnalisée PySpark.
- Spark lit automatiquement le schéma à partir de la table de base de données externe et mappe ses types aux types Spark SQL.
Utilisez un connecteur fourni
Databricks Runtime inclut des connecteurs optimisés pour les sources de données courantes. Consultez les connecteurs groupés pris en charge pour obtenir la liste complète.
Les connecteurs groupés utilisent host et port comme options distinctes au lieu d’une chaîne d’URL JDBC complète.
Lire des données à l’aide d’une requête directe
L’utilisation de l’option garantit que la query logique de filtrage et de jointure s’exécute sur la base de données source avant que les données atteignent Spark. Pour l’accès en lecture régi avec l’envoi automatique de requêtes et la délégation d’autorisation de Unity Catalog par le biais d’affichages, prenez plutôt en compte les requêtes distantes.
df = (spark.read
.format("sqlserver")
.option("host", "<your-sql-server-instance>.database.windows.net")
.option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
.option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
.option("database", "<database-name>")
.option("query", "SELECT id, name FROM users WHERE active = 1")
.load())
Écrire des données
Spécifiez un mode d’écriture avec .mode() pour contrôler la façon dont les données sont écrites. Permet append d’ajouter des lignes à une table existante ou overwrite de remplacer son contenu.
(df.write
.format("sqlserver")
.mode("overwrite")
.option("host", "<your-sql-server-instance>.database.windows.net")
.option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
.option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
.option("database", "<database-name>")
.option("dbtable", "<table-name>")
.save())
Utilisez une connexion JDBC Unity Catalog
Si un connecteur spécifique à la source n’est pas groupé ou si vous souhaitez utiliser une version spécifique du pilote JDBC, utilisez une connexion de catalogue JDBC Unity. Cela vous permet de centraliser la gestion des informations d’identification et d’apporter votre propre pilote JDBC.
Une connexion de catalogue JDBC Unity offre plusieurs avantages par rapport à l’utilisation directe d’un connecteur groupé ou d’un pilote JDBC brut. Avec une connexion de catalogue JDBC Unity, vous pouvez :
- Apportez votre propre fichier JAR de pilote JDBC pour toute base de données prenant en charge JDBC.
- Créez la connexion une fois et réutilisez-la en calcul serverless, standard et dédié.
- Utilisez l’accès régi à la source de données à l’aide d’un objet de connexion de catalogue Unity.
- Masquer les informations d’identification de connexion de l’utilisateur interrogeant.
- Lisez et écrivez dans des bases de données externes via l’API de source de données Spark.
Pour utiliser une connexion de catalogue JDBC Unity, spécifiez databricks.connection dans vos options Spark :
df = (spark.read
.format("jdbc")
.option("databricks.connection", "<connection-name>")
.option("query", "SELECT * FROM external_table")
.load())
Pour obtenir des instructions d’installation, consultez la connexion JDBC.
Utilisez un connecteur personnalisé sur des ressources de calcul dédiées
Sur le calcul dédié (classique), vous pouvez installer des connecteurs de source de données Spark tiers ou des pilotes JDBC qui ne sont pas fournis avec Databricks Runtime.
Utilisez cette approche quand :
- Vous avez besoin d’un connecteur Spark tiers pour les systèmes tels que MongoDB, Cassandra, Couchbase ou Elasticsearch.
- Vous avez besoin d’une version de pilote spécifique qui n’est pas groupée dans le runtime.
- Vous souhaitez installer un pilote JDBC directement sur le cluster sans configurer de connexion de catalogue Unity.
Installer un connecteur ou un pilote
Installez la bibliothèque sur votre cluster via Compute>your cluster>Libraries>Install new. Vous pouvez utiliser directement des coordonnées Maven sans avoir à télécharger ni à téléverser aucun fichier JAR. Redémarrez le cluster pour que la bibliothèque prenne effet.
Lire les données
Une fois le connecteur installé, utilisez le nom de format du connecteur et ses options de connexion requises pour lire les données.
df = (spark.read
.format("mongodb")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.load())
Écrire des données
Utilisez le même nom de format et les mêmes options de connexion pour réécrire les données dans la source.
(df.write
.format("mongodb")
.mode("overwrite")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.save())
Considérations
Gardez à l’esprit ce qui suit lorsque vous utilisez des connecteurs personnalisés sur un calcul dédié.
- Le pilote ou le connecteur est disponible uniquement sur le cluster où il est installé.
- Les JAR Spark personnalisés de fournisseurs tiers ne sont pas pris en charge sur les ressources de calcul Databricks SQL, serverless ou en mode d’accès standard. Pour ces types de calcul, utilisez des connecteurs groupés ou des connexions de catalogue JDBC Unity.
Sources de données personnalisées de PySpark
L’API DataSource Python vous permet de créer entièrement des connecteurs de données personnalisés dans Python, sans bibliothèques JARs ou JVM. Utilisez cette option lorsque vous devez vous connecter à des API REST, à des applications SaaS ou à un système sans interface JDBC, ou lorsque vous souhaitez générer des données synthétiques par programmation. L’API prend en charge les lectures et écritures par lots et en streaming.
Note
Les sources de données personnalisées PySpark nécessitent Databricks Runtime 15.4 LTS ou version ultérieure.
Pour obtenir des exemples et des informations de référence sur l’API, consultez les sources de données personnalisées PySpark.
Comparer les stratégies d’intégration
Le tableau suivant compare l’API de source de données Spark à Lakehouse Federation et Lakeflow Connect pour vous aider à choisir l’approche appropriée pour votre cas d’usage.
| Fonctionnalité | API de source de données Spark | Fédération de Lakehouse | Lakeflow Connect |
|---|---|---|---|
| Cas d’usage principal | ETL complexe, logique Spark personnalisée, requêtes directes | Requêtes ad hoc, création de rapports BI | Ingestion automatisée à grande échelle |
| Déplacement des données | Chargé dans la mémoire Spark (éphémère) | Chargé dans la mémoire Spark (éphémère) | Copié vers Delta Lake (persistant) |
| Exécution de la requête | Abaissement manuel grâce à l’option native query |
Envoi automatique des filtres Spark et SQL, jointures et agrégations | Non applicable (réplication complète de la table) |
| Governance | Connexion Unity Catalog (JDBC) ou étendues de secrets | Catalogue Unity (catalogue fédéré) | Unity Catalog (pipeline managé) |
| Idéal pour | Utilisateurs avancés ayant besoin de toute la flexibilité de Spark | Réduction du déplacement des données tout en préservant la gouvernance | CDC de production et pipelines d’ingestion |
Connecteurs intégrés pris en charge
Les sources de données suivantes sont regroupées dans Databricks Runtime et peuvent être appelées directement via Spark. Les lectures et les écritures sont prises en charge sur des ressources de calcul dédiées et standard.
Note
Les opérations d’écriture vers le calcul sans serveur sont prises en charge pour PostgreSQL, SQL Server, MySQL, Snowflake et Redshift. Consultez les options d’écriture sans serveur pour les connecteurs intégrés pour connaître les options de connecteur prises en charge.
| Source de données |
spark.format() nom |
|---|---|
| PostgreSQL | "postgresql" |
| SQL Server | "sqlserver" |
| MySQL et MariaDB | "mysql" |
| Flocon de neige | "snowflake" |
| Amazon Redshift | "redshift" |
| Google BigQuery | "bigquery" |
| Azure Synapse | "SQLDW" |
| HTTP | "http" |
Migrer les charges de travail JDBC BigQuery vers Databricks Runtime 20
À partir de Databricks Runtime 20, Databricks Runtime n’inclut plus le pilote JDBC BigQuery fourni. Databricks Runtime 19 et les versions antérieures continuent d’inclure le pilote. Ce changement affecte les charges de calcul classiques qui utilisent Spark JDBC avec une jdbc:bigquery: URL.
Pour trouver les charges de travail affectées, recherchez dans leur code et leur configuration une URL jdbc:bigquery:. Ce chemin JDBC est distinct du connecteur Google BigQuery fourni, qui utilise .format("bigquery") et reste disponible. En l’absence d’un pilote JDBC BigQuery installé, les charges de travail concernées échouent avec une erreur de pilote introuvable.
Avant de déplacer une charge de travail affectée vers Databricks Runtime 20 ou ultérieur, choisissez l’une des options suivantes :
- Pour les charges de travail en lecture seule, utilisez Lakehouse Federation pour interroger BigQuery via un catalogue étranger.
- Remplacez les lectures et écritures JDBC de Spark par le connecteur Google BigQuery fourni. Voir Utilisez un connecteur groupé et des connecteurs groupés supportés.
- Utilisez une connexion JDBC Unity Catalog avec votre propre pilote BigQuery JDBC.
- Sur un environnement de calcul classique dédié, installez votre propre pilote JDBC pour BigQuery.
- Gardez la charge de travail sur Databricks Runtime 19 ou avant jusqu’à ce que vous ayez terminé l’un de ces changements.
Pour des informations sur les pilotes disponibles sur Google, voir BigQuery ODBC et JDBC drivers.
Limitations
Les limitations suivantes s’appliquent lors de l’utilisation de l’API de source de données Spark dans Azure Databricks.
- Les options Spark pour les sources de données groupées sont limitées à
query,dbtableet un petit ensemble d’options spécifiques au connecteur. - Les JAR Spark tiers personnalisés ne peuvent être installés que sur un calcul dédié. Pour le calcul serverless ou standard, utilisez des connecteurs groupés ou des connexions JDBC Unity Catalog.
- Les sources de données personnalisées PySpark nécessitent Databricks Runtime 15.4 LTS ou version ultérieure.