インターネットからデータをダウンロードする
この記事では、インターネットから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)