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

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

この記事では、インターネットから 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)