download data from the internet
Cet article décrit les modèles pour ajouter des données depuis Internet à Databricks.
Databricks ne fournit aucun outil natif pour download des données depuis Internet, mais vous pouvez utiliser des outils open source dans les langages pris en charge pour download des fichiers à l’aide de notebooks.
Databricks recommande d’utiliser les volumes Unity Catalog pour stocker toutes les données non tabulaires. Vous pouvez éventuellement spécifier un volume comme destination pendant le download, ou déplacer des données vers un volume après le download.
Si vous ne spécifiez pas de chemin de sortie, la plupart des outils open source ciblent un répertoire dans votre stockage éphémère. Voir download un fichier vers le stockage éphémère.
Les volumes ne prennent pas en charge les écritures aléatoires. Si vous devez décompresser des fichiers downloaded, Databricks recommande de les download dans un stockage éphémère et de les décompresser avant de les déplacer vers des volumes. Consultez Développer et lire les fichiers compressés Zip.
Si vous accédez à des données à partir d'un stockage d'objets cloud, l'accès direct aux données avec Apache Spark fournit de meilleurs résultats. Consultez Connecter aux sources de données et aux services externes.
Certaines configurations de workspace pourraient empêcher l'accès à l'internet public. Consultez l'administrateur de votre workspace si vous avez besoin d'un accès réseau étendu.
download a file to a volume
Databricks recommande de stocker toutes les données non tabulaires dans les volumes Unity Catalog.
Les exemples suivants utilisent des packages pour Bash, Python et Scala pour download un fichier vers un volume Unity Catalog :
- Bash
- Python
- Scala
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /Volumes/my_catalog/my_schema/my_volume/curl-subway.csv
import urllib
urllib.request.urlretrieve("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv", "/Volumes/my_catalog/my_schema/my_volume/python-subway.csv")
import java.net.URL
import java.io.File
import org.apache.commons.io.FileUtils
FileUtils.copyURLToFile(new URL("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv"), new File("/Volumes/my_catalog/my_schema/my_volume/scala-subway.csv"))
Download a fichier dans le stockage éphémère
Les exemples suivants utilisent des packages pour Bash, Python et Scala pour download un fichier vers un stockage éphémère attaché au driver :
- Bash
- Python
- Scala
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /tmp/curl-subway.csv
import urllib
urllib.request.urlretrieve("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv", "/tmp/python-subway.csv")
import java.net.URL
import java.io.File
import org.apache.commons.io.FileUtils
FileUtils.copyURLToFile(new URL("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv"), new File("/tmp/scala-subway.csv"))
Étant donné que ces fichiers sont téléchargés vers le stockage éphémère attaché au driver, utilisez %sh pour les afficher, comme dans l'exemple suivant :
%sh ls /tmp/
Vous pouvez utiliser des commandes Bash pour prévisualiser le contenu des fichiers téléchargés de cette manière, comme dans l'exemple suivant :
%sh head /tmp/curl-subway.csv
Déplacer les données avec dbutils
Pour accéder aux données avec Apache Spark, vous devez les déplacer du stockage éphémère vers le stockage d'objets cloud. Databricks recommande d'utiliser des volumes pour gérer tout accès au stockage d'objets cloud. Voir Se connecter à des sources de données et à des services externes.
Les utilitaires Databricks (dbutils) vous permettent de déplacer des fichiers d'un stockage éphémère attaché au driver vers d'autres emplacements, y compris les volumes Unity Catalog. L'exemple suivant déplace les données vers un volume d'exemple :
dbutils.fs.mv("file:/tmp/curl-subway.csv", "/Volumes/my_catalog/my_schema/my_volume/subway.csv")
Lire les données download
Une fois que vous avez déplacé les données vers un volume, vous pouvez lire les données normalement. Le code suivant lit les données CSV déplacées vers un volume :
df = spark.read.format("csv").option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/subway.csv")
display(df)