メインコンテンツまでスキップ

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

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

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

Databricks 、表形式以外のすべてのデータを保存するには、 Unity Catalogボリュームを使用することを推奨しています。 ダウンロード中にボリュームを保存先として指定することも、ダウンロード後にデータをボリュームに移動することもできます。

注記

出力パスを指定しない場合、ほとんどのオープンソースツールは一時ストレージ内のディレクトリをターゲットにします。一時ストレージにファイルをダウンロードする方法を参照してください。

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

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

ワークスペースの設定によっては、公共インターネットへのアクセスが制限される場合があります。ネットワークアクセス権限の拡張が必要な場合は、ワークスペース管理者にご相談ください。

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

Databricks 、表形式以外のすべてのデータをUnity Catalogボリュームに保存することを推奨しています。

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

Bash
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /Volumes/my_catalog/my_schema/my_volume/curl-subway.csv

ファイルを一時ストレージにダウンロードする

以下の例では、Bash、Python、Scalaのパッケージを使用して、ドライバに接続された一時ストレージにファイルをダウンロードします。

Bash
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /tmp/curl-subway.csv

これらのファイルはドライバに接続された一時ストレージにダウンロードされるため、次の例のように%shを使用してこれらのファイルを表示します。

Bash
%sh ls /tmp/

Bash を使用すると、次の例のように、このようにダウンロードしたファイルの内容をプレビューできます。

Bash
%sh head /tmp/curl-subway.csv

dbutilsを使用してデータを移動する

Apache Spark を使用してデータにアクセスするには、データを一時ストレージからクラウドオブジェクトストレージに移動する必要があります。 Databricks では、クラウドオブジェクトストレージへのすべてのアクセスを管理するためにボリュームを使用することを推奨しています。 データソースと外部サービスへの接続を参照してください。

Databricksユーティリティ( dbutils ) を使用すると、ドライバーに接続された一時ストレージからUnity Catalogボリュームなどの他の場所にファイルを移動できます。 次の例では、データをサンプルボリュームに移動します。

Python
dbutils.fs.mv("file:/tmp/curl-subway.csv", "/Volumes/my_catalog/my_schema/my_volume/subway.csv")

ダウンロードしたデータを読み込む

データをボリュームに移動した後は、通常どおりデータを読み取ることができます。以下のコードは、ボリュームに移動されたCSVデータを読み込みます。

Python
df = spark.read.format("csv").option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/subway.csv")
display(df)