インターネットからデータをダウンロードする
この記事では、インターネットから Azure Databricks にデータを追加するパターンについて説明します。
Azure Databricks にはインターネットからデータをダウンロードするためのネイティブ ツールは用意されていませんが、サポートされている言語でオープンソース ツールを使用して、ノートブックを用いたファイルをダウンロードできます。
Databricks では、表形式以外のすべてのデータを保存するために Unity カタログ ボリュームを使用することをお勧めします。 必要に応じて、ダウンロード時にボリュームを宛先として指定することも、ダウンロード後にデータをボリュームに移動することもできます。
Note
出力パスを指定しない場合、ほとんどのオープンソースツールはエフェメラル ストレージ内のディレクトリを対象とします。 「エフェメラル ストレージにファイルをダウンロードする」を参照してください。
ボリュームでは、ランダム書き込みはサポートされません。 ダウンロードしたファイルを解凍する必要がある場合、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 Utilities (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)