從因特網下載數據
本文說明將數據從因特網新增至 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)