Baixar dados da internet
Este artigo descreve padrões para adicionar dados da Internet ao Azure Databricks.
O Azure Databricks não fornece ferramentas nativas para baixar dados da internet, mas você pode usar ferramentas de código aberto nas linguagens com suporte para baixar arquivos usando notebooks.
O Databricks recomenda o uso de volumes do Catálogo do Unity para armazenar todos os dados não tabulares. Opcionalmente, você pode especificar um volume como seu destino durante o download ou mover dados para um volume após o download.
Observação
Se você não especificar um caminho de saída, a maioria das ferramentas de software livre terá como destino um diretório em seu armazenamento temporário. Consulte Baixar um arquivo para o armazenamento temporário.
Os volumes não oferecem suporte a gravações aleatórias. Se você precisar descompactar arquivos baixados, o Databricks recomenda baixá-los para o armazenamento temporário e descompactá-los antes de movê-los para volumes. Consulte Expandir e ler arquivos Zip compactados.
Se você está acessando dados do armazenamento de objetos de nuvem, acessar dados diretamente com o Apache Spark fornece melhores resultados. Confira Conectar-se às fontes de dados.
Algumas configurações do workspace podem impedir o acesso à internet pública. Consulte o administrador do workspace se você precisar de acesso expandido à rede.
Baixar um arquivo em um volume
O Databricks recomenda armazenar todos os dados não tabulares em volumes do Catálogo do Unity.
Os exemplos a seguir usam pacotes para Bash, Python e Scala para baixar um arquivo em um volume do Catálogo do 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"))
Baixar um arquivo para o armazenamento temporário
Os exemplos a seguir usam pacotes para Bash, Python e Scala para baixar um arquivo no armazenamento efêmero anexado ao 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"))
Como esses arquivos são baixados no armazenamento efêmero anexado ao driver, use %sh
para ver os arquivos, como no seguinte exemplo:
%sh ls /tmp/
Você pode usar comandos Bash para visualizar o conteúdo dos arquivos baixado dessa maneira, como no seguinte exemplo:
%sh head /tmp/curl-subway.csv
Mover dados com dbutils
Para acessar dados com o Apache Spark, você deve movê-los do armazenamento efêmero para o armazenamento de objetos na nuvem. O Databricks recomenda o uso de volumes para gerenciar todo o acesso ao armazenamento de objetos de nuvem. Confira Conectar-se às fontes de dados.
Os Utilitários do Databricks (dbutils
) permitem mover arquivos do armazenamento efêmero anexado ao driver para outros locais, incluindo volumes do Catálogo do Unity. O exemplo a seguir move dados para um volume de exemplo:
dbutils.fs.mv("file:/tmp/curl-subway.csv", "/Volumes/my_catalog/my_schema/my_volume/subway.csv")
Ler dados baixados
Depois de mover os dados para um volume, você pode lê-los normalmente. O código a seguir lê os dados CSV movidos para um volume:
df = spark.read.format("csv").option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/subway.csv")
display(df)