インターネットからデータをダウンロードする

この記事では、インターネットから Databricks にデータを追加するためのパターンについて説明します。

Databricks は、インターネットからデータをダウンロードするためのネイティブ ツールを提供していませんが、サポートされている言語のオープンソース ツールを使用して、ノートブックを使用してファイルをダウンロードできます。

Databricks では、表形式以外のすべてのデータを格納するために Unity Catalog ボリュームを使用することをお勧めします。 オプションで、ダウンロード時にボリュームを宛先として指定したり、ダウンロード後にデータをボリュームに移動したりできます。

注:

出力パスを指定しない場合、ほとんどのオープンソースツールはエフェメラルストレージ内のディレクトリを対象とします。 「 エフェメラルストレージへのファイルのダウンロード」を参照してください。

ボリュームはランダム書き込みをサポートしていません。 ダウンロードしたファイルを解凍する必要がある場合、Databricks では、ファイルをエフェメラル ストレージにダウンロードし、解凍してからボリュームに移動することをお勧めします。 「Zip 圧縮ファイルの展開と読み取り」を参照してください。

クラウドオブジェクトストレージからデータにアクセスする場合は、Apache Spark を使用してデータに直接アクセスすると、より良い結果が得られます。 「データソースへの接続」を参照してください。

一部のワークスペース構成では、パブリック インターネットにアクセスできない場合があります。 拡張されたネットワークアクセスが必要な場合は、ワークスペース管理者に問い合わせてください。

ファイルをボリュームにダウンロードする

Databricks では、表形式以外のすべてのデータを Unity Catalog ボリュームに格納することをお勧めします。

次の例では、Bash、Python、Scala のパッケージを使用して、ファイルを Unity Catalog ボリュームにダウンロードします。

%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /Volumes/my_catalog/my_schema/my_volume/curl-subway.csv
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")
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 のパッケージを使用して、ドライバーにアタッチされたエフェメラル ストレージにファイルをダウンロードします。

%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /tmp/curl-subway.csv
import urllib
urllib.request.urlretrieve("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv", "/tmp/python-subway.csv")
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 Catalog ボリュームなどの他の場所にファイルを移動できます。次の例では、データをサンプルボリュームに移動します。

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)