Скачивание данных из Интернета

В этой статье описываются шаблоны добавления данных из Интернета в Azure Databricks.

Azure Databricks не предоставляет собственные средства для скачивания данных из Интернета, но вы можете использовать открытый код средства в поддерживаемых языках для скачивания файлов с помощью записных книжек.

Databricks рекомендует использовать тома каталога Unity для хранения всех не табличных данных. При необходимости можно указать том в качестве места назначения во время скачивания или переместить данные в том после скачивания.

Примечание.

Если вы не указываете выходной путь, большинство средств открытый код нацелены на каталог в эфемерном хранилище. См. раздел "Скачать файл в эфемерное хранилище".

Тома не поддерживают случайные записи. Если вам нужно распаковать скачанные файлы, Databricks рекомендует скачать их в эфемерное хранилище и распаковать их перед перемещением в тома. См. раздел "Развернуть и прочитать сжатые zip-файлы".

Если вы обращаетесь к данным из облачного хранилища объектов, доступ к данным непосредственно с помощью Apache Spark обеспечивает лучшие результаты. См. статью "Подключение к источникам данных".

Некоторые конфигурации рабочей области могут препятствовать доступу к общедоступному Интернету. Обратитесь к администратору рабочей области, если вам нужен расширенный сетевой доступ.

Скачивание файла в том

Databricks рекомендует хранить все не табличные данные в томах каталога Unity.

В следующих примерах используются пакеты для Bash, Python и Scala для скачивания файла в том каталога 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"))

Скачивание файла в эфемерное хранилище

В следующих примерах используются пакеты для Bash, Python и Scala для скачивания файла в эфемерное хранилище, подключенное к драйверу:

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

Так как эти файлы скачиваются в эфемерное хранилище, подключенное к драйверу, используйте %sh для просмотра этих файлов, как показано в следующем примере:

%sh ls /tmp/

Команды Bash можно использовать для предварительного просмотра содержимого файлов, скачиваемых таким образом, как показано в следующем примере:

%sh head /tmp/curl-subway.csv

Перемещение данных с помощью dbutils

Чтобы получить доступ к данным с помощью Apache Spark, необходимо переместить его из эфемерного хранилища в облачное хранилище объектов. Databricks рекомендует использовать тома для управления всем доступом к облачному хранилищу объектов. См. статью "Подключение к источникам данных".

Служебные программы Databricks (dbutils) позволяют перемещать файлы из эфемерного хранилища, подключенного к драйверу, в другие расположения, включая тома каталога Unity. В следующем примере данные перемещаются в пример тома:

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

Чтение скачанных данных

После перемещения данных в том можно считывать данные как обычные. Следующий код считывает данные CSV, перенесенные в том:

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