Scaricare i dati da Internet
Questo articolo descrive i modelli per l'aggiunta di dati da Internet ad Azure Databricks.
Azure Databricks non fornisce strumenti nativi per scaricare dati da Internet, ma è possibile usare strumenti open source in linguaggi supportati per scaricare i file usando notebook.
Databricks consiglia di usare i volumi di Unity Catalog per l'archiviazione di tutti i dati non tabulari. Facoltativamente, è possibile specificare un volume come destinazione durante il download o spostare i dati in un volume dopo il download.
Nota
Se non si specifica un percorso di output, la maggior parte degli strumenti open source è la destinazione di una directory nell'archiviazione temporanea. Vedere Scaricare un file per l'archiviazione temporanea.
I volumi non supportano scritture casuali. Se è necessario decomprimere i file scaricati, Databricks consiglia di scaricarli nell'archiviazione temporanea e di decomprimerli prima di spostarli nei volumi. Vedere Espandere e leggere File compressi zip.
Se si accede ai dati dall'archiviazione di oggetti cloud, l'accesso ai dati direttamente con Apache Spark offre risultati migliori. Vedere Connettersi alle origini dati.
Alcune configurazioni dell'area di lavoro potrebbero impedire l'accesso a Internet pubblico. Se è necessario espandere l'accesso alla rete, rivolgersi all'amministratore dell'area di lavoro.
Scaricare un file in un volume
Databricks consiglia di archiviare tutti i dati non tabulari nei volumi di Unity Catalog.
Gli esempi seguenti usano pacchetti per Bash, Python e Scala per scaricare un file in un volume del catalogo Unity:
Bash
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /Volumes/my_catalog/my_schema/my_volume/curl-subway.csv
Python
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")
Scala
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"))
Scaricare un file nell'archiviazione temporanea
Gli esempi seguenti usano pacchetti per Bash, Python e Scala per scaricare un file nell'archiviazione temporanea collegata al driver:
Bash
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /tmp/curl-subway.csv
Python
import urllib
urllib.request.urlretrieve("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv", "/tmp/python-subway.csv")
Scala
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"))
Poiché questi file vengono scaricati nell'archivio temporaneo collegato al driver, usare %sh
per visualizzare questi file, come nell'esempio seguente:
%sh ls /tmp/
È possibile usare i comandi Bash per visualizzare in anteprima il contenuto dei file scaricati in questo modo, come nell'esempio seguente:
%sh head /tmp/curl-subway.csv
Spostare dati con dbutils
Per accedere ai dati con Apache Spark, è necessario spostarlo dall'archiviazione temporanea all'archiviazione di oggetti cloud. Databricks consiglia di usare volumi per la gestione di tutti gli accessi all'archiviazione di oggetti cloud. Vedere Connettersi alle origini dati.
Databricks Utilities (dbutils
) consente di spostare i file dall'archiviazione temporanea collegata al driver ad altre posizioni, inclusi i volumi di Unity Catalog. L'esempio seguente sposta i dati in un volume di esempio:
dbutils.fs.mv("file:/tmp/curl-subway.csv", "/Volumes/my_catalog/my_schema/my_volume/subway.csv")
Leggere i dati scaricati
Dopo aver spostato i dati in un volume, è possibile leggere i dati come di consueto. Il codice seguente legge i dati CSV spostati in un volume:
df = spark.read.format("csv").option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/subway.csv")
display(df)