Databricks Connect pour Databricks Runtime 12.2 LTS et versions antérieures
Databricks Connect pour Databricks Runtime 12.2 LTS et versions antérieures est obsolète. Databricks Runtime 12.2 LTS et toutes les versions LTS antérieures ont atteint la fin du support. Utilisez Databricks Connect pour Databricks Runtime 13.3 LTS et versions ultérieures à la place. Pour plus d'informations sur la migration de Databricks Connect pour Databricks Runtime 12.2 LTS et versions antérieures vers Databricks Connect pour Databricks Runtime 13.3 LTS et versions ultérieures, consultez Migrer vers Databricks Connect pour Python ou Migrer vers Databricks Connect pour Scala.
Databricks Connect vous permet de connecter des IDEs populaires tels que Visual Studio Code et PyCharm, des serveurs de Notebook et d'autres applications personnalisées à des clusters Databricks.
Cet article explique comment fonctionne Databricks Connect, vous guide à travers les étapes pour commencer avec Databricks Connect, explique comment dépanner les problèmes qui peuvent survenir lors de l'utilisation de Databricks Connect, et les différences entre l'exécution avec Databricks Connect et l'exécution dans un Notebook Databricks.
Présentation
Databricks Connect est une bibliothèque cliente pour Databricks Runtime. Il vous permet d'écrire des jobs à l'aide des Spark APIs et de les exécuter à distance sur un cluster Databricks au lieu de la session Spark locale.
Par exemple, lorsque vous exécutez la commande DataFrame spark.read.format(...).load(...).groupBy(...).agg(...).show() à l'aide de Databricks Connect, la représentation logique de la commande est envoyée au serveur Spark s'exécutant dans Databricks pour être exécutée sur le cluster distant.
Avec Databricks Connect, vous pouvez :
- Exécutez des Jobs Spark à grande échelle depuis n'importe quelle application Python, R, Scala ou Java. Partout où vous pouvez
import pyspark,require(SparkR)ouimport org.apache.spark, vous pouvez désormais exécuter des Jobs Spark directement depuis votre application, sans avoir besoin d'installer de plugins IDE ou d'utiliser des scripts de soumission Spark. - Parcourez et déboguez le code dans votre IDE même lorsque vous travaillez avec un cluster distant.
- Itérez rapidement lors du développement de bibliothèques. Vous n'avez pas besoin de redémarrer le cluster après avoir modifié les dépendances des bibliothèques Python ou Java dans Databricks Connect, car chaque session client est isolée des autres dans le cluster.
- Arrêtez les clusters inactifs sans perdre de travail. Étant donné que l'application client est découplée du cluster, elle n'est pas affectée par les redémarrages ou les mises à niveau du cluster, qui vous feraient normalement perdre toutes les variables, RDD et objets DataFrame définis dans un Notebook.
Pour le développement Python avec des requêtes SQL, Databricks vous recommande d'utiliser le Connecteur Databricks SQL pour Python plutôt que Databricks Connect. Le Connecteur Databricks SQL pour Python est plus facile à configurer que Databricks Connect. En outre, Databricks Connect analyse et planifie les exécutions de jobs sur votre machine locale, tandis que les jobs s'exécutent sur des ressources de compute à distance. Cela peut rendre particulièrement difficile de déboguer les erreurs d'exécution. Le connecteur Databricks SQL pour Python soumet les requêtes SQL directement aux ressources de compute à distance et récupère les résultats.
Exigences
Cette section répertorie les exigences pour Databricks Connect.
-
Seules les versions de Databricks Runtime suivantes sont prises en charge :
- Databricks Runtime 12.2 LTS ML, Databricks Runtime 12.2 LTS
- Databricks Runtime 11.3 LTS ML, Databricks Runtime 11.3 LTS
- Databricks Runtime 10.4 LTS ML, Databricks Runtime 10.4 LTS
- Databricks Runtime 9.1 LTS ML, Databricks Runtime 9.1 LTS
- Databricks Runtime 7.3 LTS
-
Vous devez installer Python 3 sur votre machine de développement, et la version mineure de votre installation Python client doit être la même que la version mineure de Python de votre cluster Databricks. Le tableau suivant présente la version Python installée avec chaque Databricks Runtime.
Version de Databricks Runtime
Version de Python
12.2 LTS ML, 12.2 LTS
3.9
11.3 LTS ML, 11.3 LTS
3.9
10.4 LTS ML, 10.4 LTS
3,8
9.1 LTS ML, 9.1 LTS
3,8
7.3 LTS
3.7
Databricks vous recommande vivement d'activer un environnement virtuel Python pour chaque version de Python que vous utilisez avec Databricks Connect. Les environnements virtuels Python permettent de s'assurer que vous utilisez les versions correctes de Python et de Databricks Connect ensemble. Cela peut aider à réduire le temps passé à résoudre les problèmes techniques connexes.
Par exemple, si vous utilisez venv sur votre machine de développement et que votre cluster exécute Python 3,9, vous devez créer un environnement
venvavec cette version. La commande d'exemple suivante génère les scripts pour activer un environnementvenvavec Python 3,9, puis cette commande place ces scripts dans un dossier masqué nommé.venvdans le répertoire de travail actuel :Bash# Linux and macOS
python3.9 -m venv ./.venv
# Windows
python3.9 -m venv .\.venvPour utiliser ces scripts afin d'activer cet environnement
venv, reportez-vous à Fonctionnement des venvs.À titre d'autre exemple, si vous utilisez Conda sur votre machine de développement et que votre cluster exécute Python 3.9, vous devez créer un environnement Conda avec cette version, par exemple :
Bashconda create --name dbconnect python=3.9Pour activer l'environnement Conda avec ce nom d'environnement, exécutez
conda activate dbconnect. -
La version majeure et mineure du package Databricks Connect doit toujours correspondre à votre version de Databricks Runtime. Databricks vous recommande d'utiliser toujours le package le plus récent de Databricks Connect qui correspond à votre version de Databricks Runtime. Par exemple, lorsque vous utilisez un cluster Databricks Runtime 12.2 LTS, vous devez également utiliser le package
databricks-connect==12.2.*.
Consultez les notes de publication de Databricks Connect pour obtenir la liste des versions de Databricks Connect et des mises à jour de maintenance disponibles.
- Environnement d'exécution Java (Runtime) 8. Le client a été testé avec l'environnement d'exécution OpenJDK 8 JRE. Le client ne prend pas en charge Java 11.
Sur Windows, si vous voyez une erreur indiquant que Databricks Connect ne peut pas trouver winutils.exe, consultez Impossible de trouver winutils.exe sur Windows.
Configurer le client
Suivez les étapes suivantes pour configurer le client local pour Databricks Connect.
Avant de commencer à configurer le client Databricks Connect local, vous devez satisfaire aux exigences de Databricks Connect.
Étape 1 : installez le client Databricks Connect
-
Une fois votre environnement virtuel activé, désinstallez PySpark, s'il est déjà installé, en exécutant la commande
uninstall. Ceci est requis car le packagedatabricks-connectest en conflit avec PySpark. Pour plus de détails, voir Installations PySpark conflictuelles. Pour vérifier si PySpark est déjà installé, exécutez la commandeshow.Bash# Is PySpark already installed?
pip3 show pyspark
# Uninstall PySpark
pip3 uninstall pyspark -
Avec votre environnement virtuel toujours activé, installez le client Databricks Connect en exécutant la commande
install. Utilisez l'option--upgradepour mettre à niveau toute installation client existante vers la version spécifiée.Bashpip3 install --upgrade "databricks-connect==12.2.*" # Or X.Y.* to match your cluster version.
Databricks recommande d'ajouter la notation « point-astérisque » pour spécifier databricks-connect==X.Y.* au lieu de databricks-connect=X.Y, afin de s'assurer que le package le plus récent est installé.
Étape 2 : Configurez les propriétés de connexion
-
Collectez les propriétés de configuration suivantes.
-
L'URL du Workspace Databricks.
-
Votre jeton d'accès personnel Databricks.
-
L’ID de votre cluster. Vous pouvez obtenir l’ID de cluster à partir de l’URL. Ici, l'ID de cluster est
0304-201045-hoary804.
-
Le port auquel Databricks Connect se connecte sur votre cluster. Le port default est
15001.
-
-
Configurez la connexion comme suit.
Vous pouvez utiliser la CLI, les configurations SQL ou les variables d'environnement. La précédence des méthodes de configuration de la plus élevée à la moins élevée est la suivante : clés de configuration SQL, CLI et variables d'environnement.
-
CLI
- Exécuter
databricks-connect.
Bashdatabricks-connect configureLa licence affiche :
Copyright (2018) Databricks, Inc.
This library (the "Software") may not be used except in connection with the
Licensee's use of the Databricks Platform Services pursuant to an Agreement
...- Acceptez la licence et fournissez les valeurs de configuration. Pour **Databricks Host** et **Databricks Token**, saisissez l'URL du Workspace et le jeton d'accès personnel que vous avez notés à l'étape 1.
Do you accept the above agreement? [y/N] y
Set new config values (leave input empty to accept default):
Databricks Host [no current value, must start with https://]: <databricks-url>
Databricks Token [no current value]: <databricks-token>
Cluster ID (e.g., 0921-001415-jelly628) [no current value]: <cluster-id>
Org ID (Azure-only, see ?o=orgId in URL) [0]: <org-id>
Port [15001]: <port> - Exécuter
-
Configurations SQL ou variables d'environnement. Le tableau suivant présente les clés de configuration SQL et les variables d'environnement qui correspondent aux propriétés de configuration que vous avez notées à l'étape 1. Pour définir une clé de configuration SQL, utilisez
sql("set config=value"). Par exemple :sql("set spark.databricks.service.clusterId=0304-201045-abcdefgh").parameter
Clé de configuration SQL
Nom de la variable d'environnement
Hôte Databricks
spark.databricks.service.address
DATABRICKS_ADDRESS
Jeton Databricks
spark.databricks.service.token
DATABRICKS_API_TOKEN
ID de cluster
spark.databricks.service.clusterId
DATABRICKS_CLUSTER_ID
ID d'organisation
spark.databricks.service.orgId
DATABRICKS_ORG_ID
Port
spark.databricks.service.port
DATABRICKS_PORT
-
-
Avec votre environnement virtuel toujours activé, testez la connectivité à Databricks comme suit.
Bashdatabricks-connect testSi le cluster que vous avez configuré n'est pas en cours d'exécution, le test start le cluster qui restera en cours d'exécution jusqu'à son délai d'arrêt automatique configuré. Le résultat doit être similaire à ce qui suit :
* PySpark is installed at /.../.../pyspark
* Checking java version
java version "1.8..."
Java(TM) SE Runtime Environment (build 1.8...)
Java HotSpot(TM) 64-Bit Server VM (build 25..., mixed mode)
* Testing scala command
../../.. ..:..:.. WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
../../.. ..:..:.. WARN MetricsSystem: Using default name SparkStatusTracker for source because neither spark.metrics.namespace nor spark.app.id is set.
../../.. ..:..:.. WARN SparkServiceRPCClient: Now tracking server state for 5ab..., invalidating prev state
../../.. ..:..:.. WARN SparkServiceRPCClient: Syncing 129 files (176036 bytes) took 3003 ms
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2...
/_/
Using Scala version 2.... (Java HotSpot(TM) 64-Bit Server VM, Java 1.8...)
Type in expressions to have them evaluated.
Type :help for more information.
scala> spark.range(100).reduce(_ + _)
Spark context Web UI available at https://...
Spark context available as 'sc' (master = local[*], app id = local-...).
Spark session available as 'spark'.
View job details at <databricks-url>/?o=0#/setting/clusters/<cluster-id>/sparkUi
View job details at <databricks-url>?o=0#/setting/clusters/<cluster-id>/sparkUi
res0: Long = 4950
scala> :quit
* Testing python command
../../.. ..:..:.. WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
../../.. ..:..:.. WARN MetricsSystem: Using default name SparkStatusTracker for source because neither spark.metrics.namespace nor spark.app.id is set.
../../.. ..:..:.. WARN SparkServiceRPCClient: Now tracking server state for 5ab.., invalidating prev state
View job details at <databricks-url>/?o=0#/setting/clusters/<cluster-id>/sparkUi -
Si aucune erreur liée à la connexion n’est affichée (
WARNmessages sont acceptables), alors vous êtes connecté(e) avec succès.
Utiliser Databricks Connect
Cette section décrit comment configurer votre IDE ou serveur Notebook préféré pour utiliser le client pour Databricks Connect.
Dans cette section :
- JupyterLab
- Notebook Jupyter classique
- PyCharm
- SparkR et RStudio Desktop
- sparklyr et RStudio Desktop
- IntelliJ (Scala ou Java)
- PyDev avec Eclipse
- Eclipse
- SBT
- Spark Shell
JupyterLab
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec JupyterLab et Python, suivez ces instructions.
-
Pour installer JupyterLab, avec votre environnement virtuel Python activé, exécutez la commande suivante depuis votre terminal ou l'invite de commande :
Bashpip3 install jupyterlab -
Pour start JupyterLab dans votre navigateur web, exécutez la commande suivante depuis votre environnement virtuel Python activé :
Bashjupyter labSi JupyterLab n'apparaît pas dans votre navigateur web, copiez l'URL qui commence par
localhostou127.0.0.1à partir de votre environnement virtuel, et saisissez-la dans la barre d'adresse de votre navigateur web. -
Créez un nouveau Notebook : dans JupyterLab, cliquez sur Fichier > Nouveau > Notebook dans le menu principal, sélectionnez Python 3 (ipykernel) et cliquez sur Sélectionner .
-
Dans la première cellule du Notebook, saisissez soit l'exemple de code, soit votre propre code. Si vous utilisez votre propre code, vous devez au minimum instancier une instance de
SparkSession.builder.getOrCreate(), comme indiqué dans l'exemple de code. -
Pour exécuter le Notebook, cliquez sur Run > Run All Cells .
-
Pour déboguer le notebook, cliquez sur l'icône de bogue ( Activer le débogueur ) à côté de Python 3 (ipykernel) dans la barre d'outils du notebook. Définissez un ou plusieurs points d'arrêt, puis cliquez sur Run > Run All Cells .
-
Pour arrêter JupyterLab, cliquez sur Fichier > Arrêter . Si le processus JupyterLab est toujours en cours d'exécution dans votre terminal ou l'invite de commande, arrêtez ce processus en appuyant sur
Ctrl + cpuis en saisissantypour confirmer.
Pour des instructions de débogage plus spécifiques, consultez le débogueur.
Notebook Jupyter classique
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Le script de configuration pour Databricks Connect ajoute automatiquement le package à la configuration de votre projet. Pour commencer dans un noyau Python, exécutez :
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
Pour activer le raccourci %sql pour l'exécution et la visualisation des requêtes SQL, utilisez l'extrait suivant :
from IPython.core.magic import line_magic, line_cell_magic, Magics, magics_class
@magics_class
class DatabricksConnectMagics(Magics):
@line_cell_magic
def sql(self, line, cell=None):
if cell and line:
raise ValueError("Line must be empty for cell magic", line)
try:
from autovizwidget.widget.utils import display_dataframe
except ImportError:
print("Please run `pip install autovizwidget` to enable the visualization widget.")
display_dataframe = lambda x: x
return display_dataframe(self.get_spark().sql(cell or line).toPandas())
def get_spark(self):
user_ns = get_ipython().user_ns
if "spark" in user_ns:
return user_ns["spark"]
else:
from pyspark.sql import SparkSession
user_ns["spark"] = SparkSession.builder.getOrCreate()
return user_ns["spark"]
ip = get_ipython()
ip.register_magics(DatabricksConnectMagics)
Visual Studio Code
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec Visual Studio Code, procédez comme suit :
-
Vérifiez que l'extension Python est installée.
-
Ouvrez la palette de commandes ( Command+Shift+P sur macOS et Ctrl+Shift+P sur Windows/Linux).
-
Sélectionner un interpréteur Python. Accédez à Code > Préférences > Paramètres , et choisissez les paramètres Python .
-
Exécuter
databricks-connect get-jar-dir. -
Ajoutez le répertoire renvoyé par la commande au JSON des paramètres utilisateur sous
python.venvPath. Cela devrait être ajouté à la configuration Python. -
Désactivez le linter. Cliquez sur les … sur le côté droit et modifier les paramètres JSON . Les paramètres modifiés sont les suivants :

-
Si vous exécutez avec un environnement virtuel, ce qui est la méthode recommandée pour développer en Python dans VS Code, dans la palette de commandes, tapez
select python interpreteret pointez vers votre environnement qui correspond à la version Python de votre cluster.
Par exemple, si votre cluster est Python 3.9, votre environnement de développement doit être Python 3.9.

PyCharm
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Le script de configuration pour Databricks Connect ajoute automatiquement le package à la configuration de votre projet.
Clusters Python 3
-
Lorsque vous créez un projet PyCharm, sélectionnez Interprète existant . Dans le menu déroulant, sélectionnez l'environnement Conda que vous avez créé (voir Exigences).

-
Accédez à **Exécuter > Modifier les configurations**.
-
Ajoutez
PYSPARK_PYTHON=python3en tant que variable d'environnement.
SparkR et RStudio Desktop
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec SparkR et RStudio Desktop, procédez comme suit :
-
download et décompressez la distribution Spark open source sur votre machine de développement. Choisissez la même version que celle de votre cluster Databricks (Hadoop 2.7).
-
Exécutez
databricks-connect get-jar-dir. Cette commande renvoie un chemin d’accès comme/usr/local/lib/python3.5/dist-packages/pyspark/jars. Copiez le chemin d'accès au répertoire parent du répertoire JAR, par exemple,/usr/local/lib/python3.5/dist-packages/pysparkqui est leSPARK_HOMErépertoire. -
Configurez le chemin de la bibliothèque Spark et Spark Home en les ajoutant en haut de votre script R. Définissez
<spark-lib-path>sur le répertoire où vous avez décompressé le package Spark open source à l'étape 1. Définissez<spark-home-path>sur le répertoire Databricks Connect de l'étape 2.R# Point to the OSS package path, e.g., /path/to/.../spark-2.4.0-bin-hadoop2.7
library(SparkR, lib.loc = .libPaths(c(file.path('<spark-lib-path>', 'R', 'lib'), .libPaths())))
# Point to the Databricks Connect PySpark installation, e.g., /path/to/.../pyspark
Sys.setenv(SPARK_HOME = "<spark-home-path>") -
Lancez une session Spark et start running des commandes SparkR.
RsparkR.session()
df <- as.DataFrame(faithful)
head(df)
df1 <- dapply(df, function(x) { x }, schema(df))
collect(df1)
sparklyr et RStudio Desktop
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Aperçu
Cette fonctionnalité est en aperçu public.
Vous pouvez copier le code dépendant de Sparklyr que vous avez développé localement à l’aide de Databricks Connect et l’exécuter dans un Notebook Databricks ou un serveur RStudio hébergé dans votre Workspace Databricks avec des modifications de code minimales, voire aucune.
Dans cette section :
- Exigences
- Installer, configurer et utiliser sparklyr
- Ressources
- sparklyr et les limites de RStudio Desktop
Exigences
- sparklyr 1.2 ou version ultérieure.
- Databricks Runtime 7.3 LTS ou version ultérieure avec la version correspondante de Databricks Connect.
Installer, configurer et utiliser sparklyr
-
Dans RStudio Desktop, installez sparklyr 1.2 ou une version ultérieure depuis CRAN ou installez la dernière version maître depuis GitHub.
R# Install from CRAN
install.packages("sparklyr")
# Or install the latest master version from GitHub
install.packages("devtools")
devtools::install_github("sparklyr/sparklyr") -
Activez l'environnement Python avec la version correcte de Databricks Connect installée et exécutez la commande suivante dans le terminal pour obtenir le
<spark-home-path>:Bashdatabricks-connect get-spark-home -
Initiez une session Spark et start l'exécution des commandes sparklyr.
Rlibrary(sparklyr)
sc <- spark_connect(method = "databricks", spark_home = "<spark-home-path>")
iris_tbl <- copy_to(sc, iris, overwrite = TRUE)
library(dplyr)
src_tbls(sc)
iris_tbl %>% count -
Fermez la connexion.
Rspark_disconnect(sc)
Ressources
Pour en savoir plus, consultez le README de sparklyr sur GitHub.
Pour des exemples de code, consultez sparklyr.
Limitations de sparklyr et RStudio Desktop
Les fonctionnalités suivantes sont non prises en charge :
- APIs de streaming sparklyr
- APIs ML de sparklyr
- les API broom
- mode de sérialisation csv_file
- Spark Submit
IntelliJ (Scala ou Java)
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec IntelliJ (Scala ou Java), procédez comme suit :
-
Exécuter
databricks-connect get-jar-dir. -
Faites pointer les dépendances vers le répertoire renvoyé par la commande. Accédez à Fichier > Structure du projet > Modules > Dépendances > signe « + » > JARs ou Répertoires .

Pour éviter les conflits, nous vous recommandons fortement de supprimer toute autre installation Spark de votre classpath. Si cela n'est pas possible, assurez-vous que les JAR que vous ajoutez se trouvent au début du classpath. En particulier, elles doivent être antérieures à toute autre version installée de Spark (sinon, vous utiliserez l'une de ces autres versions de Spark et l'exécuterez localement, ou vous obtiendrez une
ClassDefNotFoundError). -
Vérifiez le paramètre de l'option d'atelier dans IntelliJ. La valeur default est Tout et entraînera des délais d’expiration du réseau si vous définissez des points d’arrêt pour le debugging. Définissez-le sur Thread pour éviter d’arrêter les threads réseau en arrière-plan.
PyDev avec Eclipse
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect et PyDev avec Eclipse, suivez ces instructions.
- Start Eclipse.
- Créez un projet : cliquez sur Fichier > Nouveau > Projet > PyDev > Projet PyDev , puis cliquez sur Suivant .
- Spécifiez un **nom de projet**.
- Pour les Contenus de projet , spécifiez le chemin d’accès à votre environnement virtuel Python.
- Cliquez sur Veuillez configurer un interpréteur avant de continuer.
- Cliquez sur Configuration manuelle .
- Cliquez sur Nouveau > Parcourir pour python/pypy exe .
- Parcourez et sélectionnez le chemin complet vers l'interpréteur Python référencé à partir de l'environnement virtuel, puis cliquez sur Ouvrir .
- Dans la boîte de dialogue Sélectionner un interpréteur , cliquez sur OK .
- Dans la boîte de dialogue **Sélection requise**, cliquez sur **OK**.
- Dans la boîte de dialogue Préférences , cliquez sur Appliquer et fermer .
- Dans la boîte de dialogue PyDev Project , cliquez sur Finish .
- Cliquez sur Ouvrir la perspective .
- Ajoutez au projet un fichier de code Python (
.py) qui contient soit l'exemple de code, soit votre propre code. Si vous utilisez votre propre code, vous devez au minimum instancier unSparkSession.builder.getOrCreate(), comme indiqué dans l'exemple de code. - Le fichier de code Python étant ouvert, définissez des points d'arrêt là où vous souhaitez que votre code s'interrompe pendant l'exécution.
- Cliquez sur **Exécuter > Exécuter** ou **Exécuter > Déboguer**.
Pour des instructions d’exécution et de débogage plus spécifiques, consultez Exécution d’un programme.
Eclipse
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect et Eclipse, procédez comme suit :
-
Exécuter
databricks-connect get-jar-dir. -
Pointez la configuration des JAR externes vers le répertoire renvoyé par la commande. Accédez à Project menu > Properties > Java Build Path > Libraries > Add External Jars .

Pour éviter les conflits, nous vous recommandons fortement de supprimer toute autre installation Spark de votre classpath. Si cela n'est pas possible, assurez-vous que les JAR que vous ajoutez se trouvent au début du classpath. En particulier, elles doivent être antérieures à toute autre version installée de Spark (sinon, vous utiliserez l'une de ces autres versions de Spark et l'exécuterez localement, ou vous obtiendrez une
ClassDefNotFoundError).
SBT
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec SBT, vous devez configurer votre fichier build.sbt pour le lier aux JARs Databricks Connect au lieu de la dépendance de bibliothèque Spark habituelle. Vous faites cela avec la directive unmanagedBase dans le fichier de build d'exemple suivant, qui suppose une application Scala qui a un objet principal com.example.Test :
build.sbt
name := "hello-world"
version := "1.0"
scalaVersion := "2.11.6"
// this should be set to the path returned by ``databricks-connect get-jar-dir``
unmanagedBase := new java.io.File("/usr/local/lib/python2.7/dist-packages/pyspark/jars")
mainClass := Some("com.example.Test")
Spark Shell
Avant de commencer à utiliser Databricks Connect, vous devez satisfaire aux prérequis et configurer le client pour Databricks Connect.
Pour utiliser Databricks Connect avec le Shell Spark et Python ou Scala, veuillez suivre ces instructions.
-
Une fois votre environnement virtuel activé, assurez-vous que la commande
databricks-connect tests'est exécutée avec succès dans Configurer le client. -
Une fois votre environnement virtuel activé, start le Shell Spark. Pour Python, exécutez la commande
pyspark. Pour Scala, exécutez la commandespark-shell.Bash# For Python:
pysparkBash# For Scala:
spark-shell -
Le shell Spark apparaît, par exemple pour Python :
Python 3... (v3...)
[Clang 6... (clang-6...)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
../../.. ..:..:.. WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 3....
/_/
Using Python version 3... (v3...)
Spark context Web UI available at http://...:...
Spark context available as 'sc' (master = local[*], app id = local-...).
SparkSession available as 'spark'.
>>>Pour Scala :
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
../../.. ..:..:.. WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark context Web UI available at http://...
Spark context available as 'sc' (master = local[*], app id = local-...).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3...
/_/
Using Scala version 2... (OpenJDK 64-Bit Server VM, Java 1.8...)
Type in expressions to have them evaluated.
Type :help for more information.
scala> -
Reportez-vous à Analyse interactive avec le Shell Spark pour plus d'informations sur l'utilisation du Shell Spark avec Python ou Scala afin d'exécuter des commandes sur votre cluster.
Utilisez la variable
sparkintégrée pour représenter leSparkSessionsur votre cluster en cours d'exécution, par exemple pour Python :>>> df = spark.read.table("samples.nyctaxi.trips")
>>> df.show(5)
+--------------------+---------------------+-------------+-----------+----------+-----------+
|tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
+--------------------+---------------------+-------------+-----------+----------+-----------+
| 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171|
| 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110|
| 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023|
| 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017|
| 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282|
+--------------------+---------------------+-------------+-----------+----------+-----------+
only showing top 5 rowsPour Scala :
>>> val df = spark.read.table("samples.nyctaxi.trips")
>>> df.show(5)
+--------------------+---------------------+-------------+-----------+----------+-----------+
|tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
+--------------------+---------------------+-------------+-----------+----------+-----------+
| 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171|
| 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110|
| 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023|
| 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017|
| 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282|
+--------------------+---------------------+-------------+-----------+----------+-----------+
only showing top 5 rows -
Pour arrêter le shell Spark, appuyez sur
Ctrl + douCtrl + z, ou exécutez la commandequit()ouexit()pour Python ou:qou:quitpour Scala.
Exemples de code
Cet exemple de code simple query la table spécifiée, puis affiche ses 5 premières lignes. Pour utiliser une autre table, ajustez l'appel à spark.read.table.
from pyspark.sql.session import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.read.table("samples.nyctaxi.trips")
df.show(5)
Cet exemple de code plus long effectue les opérations suivantes :
- Crée un DataFrame en mémoire.
- Crée une table portant le nom
zzz_demo_temps_tabledans le schémadefault. Si la table avec ce nom existe déjà, la table est d’abord supprimée. Pour utiliser un schéma ou une table différente, ajustez les appels àspark.sql,temps.write.saveAsTableou les deux. - Enregistre le contenu du DataFrame dans la table.
- Exécute une query
SELECTsur le contenu de la table. - Affiche le résultat de la query.
- Supprime la table.
- Python
- Scala
- Java
from pyspark.sql import SparkSession
from pyspark.sql.types import *
from datetime import date
spark = SparkSession.builder.appName('temps-demo').getOrCreate()
# Create a Spark DataFrame consisting of high and low temperatures
# by airport code and date.
schema = StructType([
StructField('AirportCode', StringType(), False),
StructField('Date', DateType(), False),
StructField('TempHighF', IntegerType(), False),
StructField('TempLowF', IntegerType(), False)
])
data = [
[ 'BLI', date(2021, 4, 3), 52, 43],
[ 'BLI', date(2021, 4, 2), 50, 38],
[ 'BLI', date(2021, 4, 1), 52, 41],
[ 'PDX', date(2021, 4, 3), 64, 45],
[ 'PDX', date(2021, 4, 2), 61, 41],
[ 'PDX', date(2021, 4, 1), 66, 39],
[ 'SEA', date(2021, 4, 3), 57, 43],
[ 'SEA', date(2021, 4, 2), 54, 39],
[ 'SEA', date(2021, 4, 1), 56, 41]
]
temps = spark.createDataFrame(data, schema)
# Create a table on the Databricks cluster and then fill
# the table with the DataFrame's contents.
# If the table already exists from a previous run,
# delete it first.
spark.sql('USE default')
spark.sql('DROP TABLE IF EXISTS zzz_demo_temps_table')
temps.write.saveAsTable('zzz_demo_temps_table')
# Query the table on the Databricks cluster, returning rows
# where the airport code is not BLI and the date is later
# than 2021-04-01. Group the results and order by high
# temperature in descending order.
df_temps = spark.sql("SELECT * FROM zzz_demo_temps_table " \
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " \
"GROUP BY AirportCode, Date, TempHighF, TempLowF " \
"ORDER BY TempHighF DESC")
df_temps.show()
# Results:
#
# +-----------+----------+---------+--------+
# |AirportCode| Date|TempHighF|TempLowF|
# +-----------+----------+---------+--------+
# | PDX|2021-04-03| 64| 45|
# | PDX|2021-04-02| 61| 41|
# | SEA|2021-04-03| 57| 43|
# | SEA|2021-04-02| 54| 39|
# +-----------+----------+---------+--------+
# Clean up by deleting the table from the Databricks cluster.
spark.sql('DROP TABLE zzz_demo_temps_table')
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
import java.sql.Date
object Demo {
def main(args: Array[String]) {
val spark = SparkSession.builder.master("local").getOrCreate()
// Create a Spark DataFrame consisting of high and low temperatures
// by airport code and date.
val schema = StructType(Array(
StructField("AirportCode", StringType, false),
StructField("Date", DateType, false),
StructField("TempHighF", IntegerType, false),
StructField("TempLowF", IntegerType, false)
))
val data = List(
Row("BLI", Date.valueOf("2021-04-03"), 52, 43),
Row("BLI", Date.valueOf("2021-04-02"), 50, 38),
Row("BLI", Date.valueOf("2021-04-01"), 52, 41),
Row("PDX", Date.valueOf("2021-04-03"), 64, 45),
Row("PDX", Date.valueOf("2021-04-02"), 61, 41),
Row("PDX", Date.valueOf("2021-04-01"), 66, 39),
Row("SEA", Date.valueOf("2021-04-03"), 57, 43),
Row("SEA", Date.valueOf("2021-04-02"), 54, 39),
Row("SEA", Date.valueOf("2021-04-01"), 56, 41)
)
val rdd = spark.sparkContext.makeRDD(data)
val temps = spark.createDataFrame(rdd, schema)
// Create a table on the Databricks cluster and then fill
// the table with the DataFrame's contents.
// If the table already exists from a previous run,
// delete it first.
spark.sql("USE default")
spark.sql("DROP TABLE IF EXISTS zzz_demo_temps_table")
temps.write.saveAsTable("zzz_demo_temps_table")
// Query the table on the Databricks cluster, returning rows
// where the airport code is not BLI and the date is later
// than 2021-04-01. Group the results and order by high
// temperature in descending order.
val df_temps = spark.sql("SELECT * FROM zzz_demo_temps_table " +
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " +
"GROUP BY AirportCode, Date, TempHighF, TempLowF " +
"ORDER BY TempHighF DESC")
df_temps.show()
// Results:
//
// +-----------+----------+---------+--------+
// |AirportCode| Date|TempHighF|TempLowF|
// +-----------+----------+---------+--------+
// | PDX|2021-04-03| 64| 45|
// | PDX|2021-04-02| 61| 41|
// | SEA|2021-04-03| 57| 43|
// | SEA|2021-04-02| 54| 39|
// +-----------+----------+---------+--------+
// Clean up by deleting the table from the Databricks cluster.
spark.sql("DROP TABLE zzz_demo_temps_table")
}
}
import java.util.ArrayList;
import java.util.List;
import java.sql.Date;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.*;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.Dataset;
public class App {
public static void main(String[] args) throws Exception {
SparkSession spark = SparkSession
.builder()
.appName("Temps Demo")
.config("spark.master", "local")
.getOrCreate();
// Create a Spark DataFrame consisting of high and low temperatures
// by airport code and date.
StructType schema = new StructType(new StructField[] {
new StructField("AirportCode", DataTypes.StringType, false, Metadata.empty()),
new StructField("Date", DataTypes.DateType, false, Metadata.empty()),
new StructField("TempHighF", DataTypes.IntegerType, false, Metadata.empty()),
new StructField("TempLowF", DataTypes.IntegerType, false, Metadata.empty()),
});
List<Row> dataList = new ArrayList<Row>();
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-03"), 52, 43));
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-02"), 50, 38));
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-01"), 52, 41));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-03"), 64, 45));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-02"), 61, 41));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-01"), 66, 39));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-03"), 57, 43));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-02"), 54, 39));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-01"), 56, 41));
Dataset<Row> temps = spark.createDataFrame(dataList, schema);
// Create a table on the Databricks cluster and then fill
// the table with the DataFrame's contents.
// If the table already exists from a previous run,
// delete it first.
spark.sql("USE default");
spark.sql("DROP TABLE IF EXISTS zzz_demo_temps_table");
temps.write().saveAsTable("zzz_demo_temps_table");
// Query the table on the Databricks cluster, returning rows
// where the airport code is not BLI and the date is later
// than 2021-04-01. Group the results and order by high
// temperature in descending order.
Dataset<Row> df_temps = spark.sql("SELECT * FROM zzz_demo_temps_table " +
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " +
"GROUP BY AirportCode, Date, TempHighF, TempLowF " +
"ORDER BY TempHighF DESC");
df_temps.show();
// Results:
//
// +-----------+----------+---------+--------+
// |AirportCode| Date|TempHighF|TempLowF|
// +-----------+----------+---------+--------+
// | PDX|2021-04-03| 64| 45|
// | PDX|2021-04-02| 61| 41|
// | SEA|2021-04-03| 57| 43|
// | SEA|2021-04-02| 54| 39|
// +-----------+----------+---------+--------+
// Clean up by deleting the table from the Databricks cluster.
spark.sql("DROP TABLE zzz_demo_temps_table");
}
}
Travailler avec les dépendances
Généralement, votre classe principale ou fichier Python aura d’autres fichiers JAR et fichiers de dépendance. Vous pouvez ajouter de tels fichiers JAR et de dépendance en appelant sparkContext.addJar("path-to-the-jar") ou sparkContext.addPyFile("path-to-the-file"). Vous pouvez également ajouter des fichiers Egg et des fichiers zip avec l’interface addPyFile(). Chaque fois que vous exécutez le code dans votre IDE, les fichiers JAR de dépendance et les fichiers sont installés sur le cluster.
- Python
- Scala
from lib import Foo
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
sc = spark.sparkContext
#sc.setLogLevel("INFO")
print("Testing simple count")
print(spark.range(100).count())
print("Testing addPyFile isolation")
sc.addPyFile("lib.py")
print(sc.parallelize(range(10)).map(lambda i: Foo(2)).collect())
class Foo(object):
def __init__(self, x):
self.x = x
UDF Python + Java
from pyspark.sql import SparkSession
from pyspark.sql.column import _to_java_column, _to_seq, Column
## In this example, udf.jar contains compiled Java / Scala UDFs:
#package com.example
#
#import org.apache.spark.sql._
#import org.apache.spark.sql.expressions._
#import org.apache.spark.sql.functions.udf
#
#object Test {
# val plusOne: UserDefinedFunction = udf((i: Long) => i + 1)
#}
spark = SparkSession.builder \
.config("spark.jars", "/path/to/udf.jar") \
.getOrCreate()
sc = spark.sparkContext
def plus_one_udf(col):
f = sc._jvm.com.example.Test.plusOne()
return Column(f.apply(_to_seq(sc, [col], _to_java_column)))
sc._jsc.addJar("/path/to/udf.jar")
spark.range(100).withColumn("plusOne", plus_one_udf("id")).show()
package com.example
import org.apache.spark.sql.SparkSession
case class Foo(x: String)
object Test {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
...
.getOrCreate();
spark.sparkContext.setLogLevel("INFO")
println("Running simple show query...")
spark.read.format("parquet").load("/tmp/x").show()
println("Running simple UDF query...")
spark.sparkContext.addJar("./target/scala-2.11/hello-world_2.11-1.0.jar")
spark.udf.register("f", (x: Int) => x + 1)
spark.range(10).selectExpr("f(id)").show()
println("Running custom objects query...")
val objs = spark.sparkContext.parallelize(Seq(Foo("bye"), Foo("hi"))).collect()
println(objs.toSeq)
}
}
Accédez aux infrastructures publiques Databricks
Cette section décrit comment utiliser Databricks Connect pour accéder aux utilitaires Databricks.
Vous pouvez utiliser les utilitaires dbutils.fs et dbutils.secrets du module de référence des utilitaires Databricks (dbutils).
Les commandes prises en charge sont dbutils.fs.cp, dbutils.fs.head, dbutils.fs.ls, dbutils.fs.mkdirs, dbutils.fs.mv, dbutils.fs.put, dbutils.fs.rm, dbutils.secrets.get, dbutils.secrets.getBytes, dbutils.secrets.list, dbutils.secrets.listScopes.
Consultez l’ utilitaire de système de fichiers (dbutils.fs) ou exécutez dbutils.fs.help() et l'utilitaire Secrets (dbutils.secrets) ou exécutez dbutils.secrets.help().
- Python
- Scala
from pyspark.sql import SparkSession
from pyspark.dbutils import DBUtils
spark = SparkSession.builder.getOrCreate()
dbutils = DBUtils(spark)
print(dbutils.fs.ls("dbfs:/"))
print(dbutils.secrets.listScopes())
Lorsque vous utilisez Databricks Runtime 7.3 LTS ou version supérieure, pour accéder au module DBUtils d'une manière qui fonctionne à la fois localement et dans les clusters Databricks, utilisez ce qui suit get_dbutils():
def get_dbutils(spark):
from pyspark.dbutils import DBUtils
return DBUtils(spark)
Sinon, utilisez le get_dbutils() suivant :
def get_dbutils(spark):
if spark.conf.get("spark.databricks.service.client.enabled") == "true":
from pyspark.dbutils import DBUtils
return DBUtils(spark)
else:
import IPython
return IPython.get_ipython().user_ns["dbutils"]
val dbutils = com.databricks.service.DBUtils
println(dbutils.fs.ls("dbfs:/"))
println(dbutils.secrets.listScopes())
Copie de fichiers entre des systèmes de fichiers locaux et distants
Vous pouvez utiliser dbutils.fs pour copier des fichiers entre votre client et des systèmes de fichiers distants. Le schéma file:/ fait référence au système de fichiers local sur le client.
from pyspark.dbutils import DBUtils
dbutils = DBUtils(spark)
dbutils.fs.cp('file:/home/user/data.csv', 'dbfs:/uploads')
dbutils.fs.cp('dbfs:/output/results.csv', 'file:/home/user/downloads/')
La taille maximale du fichier qui peut être transféré de cette manière est de 250 Mo.
Activer dbutils.secrets.get
En raison de restrictions de sécurité, la possibilité d’appeler dbutils.secrets.get est désactivée par default. Contactez le support Databricks pour activer cette fonctionnalité pour votre Workspace.
Définir les configurations Hadoop
Côté client, vous pouvez définir les configurations Hadoop à l'aide de l'API spark.conf.set, ce qui s'applique aux Opérations SQL et DataFrame. Les configurations Hadoop définies sur le sparkContext doivent être configurées dans la configuration du cluster ou à l'aide d'un Notebook. C'est parce que les configurations définies sur sparkContext ne sont pas liées aux sessions utilisateur, mais s'appliquent à l'ensemble du cluster.
Dépannage
Exécutez databricks-connect test pour vérifier les problèmes de connectivité. Cette section décrit certains problèmes courants que vous pouvez rencontrer avec Databricks Connect et comment les résoudre.
Dans cette section :
- Incompatibilité de version Python
- Serveur non activé
- Installations PySpark conflictuelles
- En conflit
SPARK_HOME - Entrée
PATHen conflit ou manquante pour les binaires - Paramètres de sérialisation en conflit sur le cluster
- Impossible de trouver
winutils.exesur Windows - La syntaxe du nom de fichier, du nom de répertoire ou de l'étiquette de volume est incorrecte sous Windows
Incompatibilité de version Python
Vérifiez que la version de Python que vous utilisez en local a au moins la même version mineure que la version sur le cluster (par exemple, 3.9.16 par rapport à 3.9.15 est acceptable, 3.9 par rapport à 3.8 ne l'est pas).
Si vous avez plusieurs versions de Python installées localement, assurez-vous que Databricks Connect utilise la bonne en définissant la variable d'environnement PYSPARK_PYTHON (par exemple, PYSPARK_PYTHON=python3).
Serveur non activé
Assurez-vous que le cluster a le serveur Spark activé avec spark.databricks.service.server.enabled true. Vous devriez voir les lignes suivantes dans les logs du driver si :
../../.. ..:..:.. INFO SparkConfUtils$: Set spark config:
spark.databricks.service.server.enabled -> true
...
../../.. ..:..:.. INFO SparkContext: Loading Spark Service RPC Server
../../.. ..:..:.. INFO SparkServiceRPCServer:
Starting Spark Service RPC Server
../../.. ..:..:.. INFO Server: jetty-9...
../../.. ..:..:.. INFO AbstractConnector: Started ServerConnector@6a6c7f42
{HTTP/1.1,[http/1.1]}{0.0.0.0:15001}
../../.. ..:..:.. INFO Server: Started @5879ms
Installations PySpark en conflit
Le package databricks-connect est en conflit avec PySpark. Le fait d'avoir les deux installés provoquera des erreurs lors de l'initialisation du contexte Spark en Python. Cela peut se manifester de plusieurs manières, y compris par des erreurs « Stream corrupted » ou « classe introuvable ». Si PySpark est installé dans votre environnement Python, assurez-vous qu'il est désinstallé avant d'installer databricks-connect. Après la désinstallation de PySpark, assurez-vous de réinstaller complètement le package Databricks Connect :
pip3 uninstall pyspark
pip3 uninstall databricks-connect
pip3 install --upgrade "databricks-connect==12.2.*" # or X.Y.* to match your specific cluster version.
En conflit SPARK_HOME
Si vous avez déjà utilisé Spark sur votre machine, votre IDE peut être configuré pour utiliser l'une de ces autres versions de Spark plutôt que le Spark de Databricks Connect. Cela peut se manifester de plusieurs manières, notamment par des erreurs « stream corrompu » ou « classe introuvable ». Vous pouvez voir quelle version de Spark est utilisée en vérifiant la valeur de la variable d'environnement SPARK_HOME :
- Python
- Scala
- Java
import os
print(os.environ['SPARK_HOME'])
println(sys.env.get("SPARK_HOME"))
System.out.println(System.getenv("SPARK_HOME"));
Résolution
Si SPARK_HOME est défini sur une version de Spark autre que celle du client, vous devriez annuler la variable SPARK_HOME et réessayer.
Vérifiez les paramètres de variable d'environnement de votre IDE, votre fichier .bashrc, .zshrc ou .bash_profile, et tout autre endroit où les variables d'environnement pourraient être définies. Vous devrez très probablement quitter et redémarrer votre IDE pour purger l'ancien état, et vous pourriez même avoir besoin de créer un nouveau projet si le problème persiste.
Vous ne devriez pas avoir besoin de définir SPARK_HOME à une nouvelle valeur ; le désactiver devrait être suffisant.
Entrée PATH en conflit ou manquante pour les binaires
Il est possible que votre PATH soit configuré de telle sorte que des commandes comme spark-shell exécutent un autre binaire précédemment installé au lieu de celui fourni avec Databricks Connect. Cela peut entraîner l'échec de databricks-connect test. Vous devez vous assurer que les binaires de Databricks Connect ont la priorité, ou supprimer ceux précédemment installés.
Si vous ne pouvez pas exécuter des commandes comme spark-shell, il est également possible que votre PATH n’ait pas été configuré automatiquement par pip3 install, et vous devrez ajouter manuellement le répertoire d’installation bin à votre PATH. Il est possible d’utiliser Databricks Connect avec les IDE, même si cela n’est pas configuré. Cependant, la commande databricks-connect test ne fonctionnera pas.
Paramètres de sérialisation en conflit sur le cluster
Si vous voyez des erreurs « stream corrupted » lors de l’exécution de databricks-connect test, cela peut être dû à des configurations de sérialisation des clusters incompatibles. Par exemple, la définition de la configuration spark.io.compression.codec peut entraîner ce problème. Pour résoudre ce problème, envisagez de supprimer ces configurations des paramètres du cluster, ou de définir la configuration dans le client Databricks Connect.
Impossible de trouver winutils.exe sur Windows
Si vous utilisez Databricks Connect sur Windows et que vous voyez :
ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
Suivez les instructions pour configurer le chemin Hadoop sur Windows.
La syntaxe du nom de fichier, du nom de répertoire ou de l'étiquette de volume est incorrecte sur Windows
Si vous utilisez Windows et Databricks Connect et que vous voyez :
The filename, directory name, or volume label syntax is incorrect.
Java ou Databricks Connect ont été installés dans un répertoire avec un espace dans votre chemin. Vous pouvez contourner ce problème en l'installant dans un chemin de répertoire sans espaces, ou en configurant votre chemin d'accès à l'aide du formulaire de nom court.
Limitations
-
Structured Streaming.
-
Exécuter du code arbitraire qui ne fait pas partie d'un job Spark sur le cluster distant.
-
Les APIs natives Scala, Python et R pour les opérations de table Delta (par exemple,
DeltaTable.forPath) ne sont pas prises en charge. Cependant, l’API SQL (spark.sql(...)) avec les opérations Delta Lake et l’API Spark (par exemple,spark.read.load) sur les tables Delta sont toutes deux prises en charge. -
Copier dans.
-
Utilisation des fonctions SQL, des UDF Python ou Scala qui font partie du catalogue du serveur. Cependant, les UDF Scala et Python introduites localement fonctionnent.
-
Apache Zeppelin 0.7.x et versions antérieures.
-
Connexion aux clusters avec le contrôle d'accès aux tables.
-
Connexion aux clusters avec l’isolation des processus activée (en d’autres termes, lorsque
spark.databricks.pyspark.enableProcessIsolationest défini surtrue). -
Commande SQL Delta
CLONE. -
Vues temporaires globales.
-
Koalas et
pyspark.pandas. -
CREATE TABLE table AS SELECT ...Les commandes SQL ne fonctionnent pas toujours. Au lieu de cela, utilisezspark.sql("SELECT ...").write.saveAsTable("table"). -
La référence Databricks Utilities (
dbutils) suivante: