Compartir a través de


Descarga de datos desde Internet

Puede usar cuadernos de Azure Databricks para descargar datos de direcciones URL públicas. Azure Databricks no proporciona ninguna herramienta nativa para descargar datos de Internet, pero puede usar herramientas de código abierto en los lenguajes admitidos. Si accede a los datos desde el almacenamiento de objetos en la nube, acceder a los datos directamente con Apache Spark proporciona mejores resultados. Consulte Conexión a orígenes de datos.

Los clústeres de Azure Databricks proporcionan un proceso general, lo que le permite ejecutar código arbitrario además de comandos de Apache Spark. Los comandos arbitrarios almacenan los resultados en el almacenamiento efímero conectado al controlador de forma predeterminada. Debe mover los datos descargados a una nueva ubicación antes de leerlos con Apache Spark, ya que Apache Spark no puede leer desde el almacenamiento efímero. Consulte Trabajar con archivos en Azure Databricks.

Databricks recomienda usar volúmenes de Unity Catalog para almacenar todos los datos no tabulares. Opcionalmente, puede especificar un volumen como destino durante la descarga o mover datos a un volumen después de la descarga. Los volúmenes no admiten escrituras aleatorias, así que descargue los archivos y descomprímalos en el almacenamiento efímero antes de moverlos a volúmenes. Consulte Expansión y lectura de archivos comprimidos ZIP.

Nota:

Algunas configuraciones del área de trabajo podrían impedir el acceso a la red pública de Internet. Si necesita acceso de red ampliado, consulte al administrador del área de trabajo.

Descarga de un archivo en un volumen

Databricks recomienda almacenar todos los datos no tabulares en volúmenes de Unity Catalog.

En los siguientes ejemplos se usan paquetes para Bash, Python y Scala para descargar un archivo en un volumen de Unity Catalog:

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"))

Descarga de un archivo en almacenamiento efímero

En los siguientes ejemplos se usan paquetes para Bash, Python y Scala para descargar un archivo en el almacenamiento efímero asociado al controlador:

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"))

Dado que estos archivos se descargan en el almacenamiento efímero conectado al controlador, use %sh para ver estos archivos, como en el siguiente ejemplo:

%sh ls /tmp/

Puede usar comandos de Bash para obtener una vista previa del contenido de los archivos descargados de esta manera, como en el ejemplo siguiente:

%sh head /tmp/curl-subway.csv

Traslado de datos con dbutils

Para acceder a los datos con Apache Spark, debe trasladarlos del almacenamiento efímero al almacenamiento de objetos en la nube. Databricks recomienda usar volúmenes para administrar todo el acceso al almacenamiento de objetos en la nube. Consulte Conexión a orígenes de datos.

Las utilidades de Databricks (dbutils) permiten trasladar archivos del almacenamiento efímero asociado al controlador a otras ubicaciones, incluidos los volúmenes de Unity Catalog. En el siguiente ejemplo se mueven los datos a un volumen de ejemplo:

dbutils.fs.mv("file:/tmp/curl-subway.csv", "/Volumes/my_catalog/my_schema/my_volume/subway.csv")

Lectura de datos descargados

Después de trasladar los datos a un volumen, puede leerlos como normales. El siguiente código lee los datos CSV movidos a un volumen:

df = spark.read.format("csv").option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/subway.csv")
display(df)