Pobieranie danych z Internetu

W tym artykule opisano wzorce dodawania danych z Internetu do usługi Azure Databricks.

Usługa Azure Databricks nie udostępnia żadnych natywnych narzędzi do pobierania danych z Internetu, ale możesz użyć narzędzi typu open source w obsługiwanych językach do pobierania plików przy użyciu notesów.

Usługa Databricks zaleca używanie woluminów wykazu aparatu Unity do przechowywania wszystkich danych innych niż tabelaryczne. Opcjonalnie możesz określić wolumin jako miejsce docelowe podczas pobierania lub przenieść dane do woluminu po pobraniu.

Uwaga

Jeśli nie określisz ścieżki wyjściowej, większość narzędzi typu open source dotyczy katalogu w magazynie efemerycznym. Zobacz Pobieranie pliku do magazynu efemerycznego.

Woluminy nie obsługują losowych zapisów. Jeśli chcesz rozpakować pobrane pliki, usługa Databricks zaleca pobranie ich do magazynu efemerycznego i rozpakowywanie ich przed przeniesieniem ich do woluminów. Zobacz Rozwijanie i odczytywanie skompresowanych plików zip.

Jeśli uzyskujesz dostęp do danych z magazynu obiektów w chmurze, uzyskiwanie dostępu do danych bezpośrednio za pomocą platformy Apache Spark zapewnia lepsze wyniki. Zobacz Nawiązywanie połączenia ze źródłami danych.

Niektóre konfiguracje obszarów roboczych mogą uniemożliwić dostęp do publicznego Internetu. Jeśli potrzebujesz rozszerzonego dostępu do sieci, skontaktuj się z administratorem obszaru roboczego.

Pobieranie pliku do woluminu

Usługa Databricks zaleca przechowywanie wszystkich danych innych niż tabelaryczne w woluminach wykazu aparatu Unity.

W poniższych przykładach użyto pakietów dla powłoki Bash, języka Python i języka Scala, aby pobrać plik do woluminu wykazu aparatu 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"))

Pobieranie pliku do magazynu efemerycznego

W poniższych przykładach użyto pakietów dla powłoki Bash, języka Python i języka Scala, aby pobrać plik do magazynu efemerycznego dołączonego do sterownika:

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

Ponieważ te pliki są pobierane do magazynu efemerycznego dołączonego do sterownika, użyj polecenia %sh , aby wyświetlić te pliki, jak w poniższym przykładzie:

%sh ls /tmp/

Możesz użyć poleceń powłoki Bash, aby wyświetlić podgląd zawartości plików pobranych w ten sposób, jak w poniższym przykładzie:

%sh head /tmp/curl-subway.csv

Przenoszenie danych za pomocą narzędzia dbutils

Aby uzyskać dostęp do danych za pomocą platformy Apache Spark, musisz przenieść je z magazynu efemerycznego do magazynu obiektów w chmurze. Usługa Databricks zaleca używanie woluminów do zarządzania wszystkimi dostępami do magazynu obiektów w chmurze. Zobacz Nawiązywanie połączenia ze źródłami danych.

Narzędzia usługi Databricks (dbutils) umożliwiają przenoszenie plików z magazynu efemerycznego dołączonego do sterownika do innych lokalizacji, w tym woluminów wykazu aparatu Unity. Poniższy przykład przenosi dane do przykładowego woluminu:

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

Odczytywanie pobranych danych

Po przeniesieniu danych do woluminu można odczytywać dane w zwykły sposób. Poniższy kod odczytuje dane CSV przeniesione do woluminu:

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