Скачивание данных из Интернета
В этой статье описываются шаблоны добавления данных из Интернета в 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)