インターネットからデータをダウンロードする
この記事では、インターネットから Databricks にデータを追加するためのパターンについて説明します。
Databricks は、インターネットからデータをダウンロードするためのネイティブ ツールを提供していませんが、サポートされている言語のオープンソース ツールを使用して、ノートブックを使用してファイルをダウンロードできます。
Databricks では、表形式以外のすべてのデータを格納するために Unity Catalog ボリュームを使用することをお勧めします。 オプションで、ダウンロード時にボリュームを宛先として指定したり、ダウンロード後にデータをボリュームに移動したりできます。
出力パスを指定しない場合、ほとんどのオープンソースツールはエフェメラルストレージ内のディレクトリを対象とします。 「 エフェメラルストレージへのファイルのダウンロード」を参照してください。
ボリュームはランダム書き込みをサポートしていません。 ダウンロードしたファイルを解凍する必要がある場合、Databricks では、ファイルをエフェメラル ストレージにダウンロードし、解凍してからボリュームに移動することをお勧めします。 「Zip 圧縮ファイルの展開と読み取り」を参照してください。
クラウド・オブジェクト・ストレージからデータにアクセスしている場合は、Apache Spark を使用してデータに直接アクセスすると、より良い結果が得られます。 「データソースへの接続」を参照してください。
一部のワークスペース構成では、パブリック インターネットにアクセスできない場合があります。 拡張されたネットワークアクセスが必要な場合は、ワークスペース管理者に問い合わせてください。
ファイルをボリュームにダウンロードする
Databricks では、表形式以外のすべてのデータを Unity Catalog ボリュームに格納することをお勧めします。
次の例では、Bash、Python、Scala のパッケージを使用して、ファイルを Unity Catalog ボリュームにダウンロードします。
- Bash
- Python
- Scala
%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 のパッケージを使用して、ドライバーにアタッチされたエフェメラル ストレージにファイルをダウンロードします。
- 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)