Condividi tramite


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)