0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricksにおけるインターネットからのデータのダウンロード

Posted at

Download data from the internet | Databricks on AWS [2023/1/25時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

公開URLからデータをお使いのクラスタードライバーにアタッチされているボリュームストレージにダウンロードするためのDatabricksノートブックを活用することができます。クラウドオブジェクトストレージからデータにアクセスしている場合には、Apache Sparkを用いて直接データにアクセスすることでより良い結果を得ることができます。

Databricksクラスターは汎用計算資源を提供するので、Apache Sparkコマンドに加えて任意のコードを実行することができます。任意のコードはDBFSルートではなく、クラスターのルートディレクトリに実行されるので、ダウンロードしたデータをApache Sparkで読み込む前に新たな場所にデータを移動しなくてはなりません。

注意
いくつかのワークスペースでは、公衆インターネットへのアクセスを許可していない場合があります。ネットワークアクセスの拡張が必要かどうかはワークスペース管理者にお問い合わせください。

Bash、Python、Scalaによるファイルのダウンロード

Databricksでは、インターネットからデータをダウンロードするネイティブツールは提供していませんが、サポートされる言語で利用できるオープンソースツールを活用することができます。以下の例では、いくつかのファイルをダウンロードするためにBash、Python、Scalaを使用しています。

Bash
%sh curl https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv --output /tmp/curl-subway.csv
Python
import urllib
urllib.request.urlretrieve("https://data.cityofnewyork.us/api/views/kk4q-3rt2/rows.csv", "/tmp/python-subway.csv")
Scala
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を使います。

Bash
%sh ls /tmp/

以下のサンプルのように、ダウンロードしたファイルのコンテンツをプレビューするためにBashコマンドを使うことができます。

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

dbutilsによるデータの移動

Apache Sparkを用いてデータにアクセスするには、カレントロケーションからデータを移動します。このデータのカレントロケーションは、ドライバーからのみ参照できる揮発的なボリュームストレージです。Databricksは並列にファイルソースからデータをロードするので、ファイルは計算資源のすべてのノードから参照できなくてはなりません。Databricksでは幅広い外部データソースをサポートしていますが、ファイルベースのデータアクセスは通常クラウドオブジェクトストレージへのアクセスを前提としています。

Databricksユーティリティ(dbutils)を用いることで、ドライバーにアタッチされたボリュームストレージから、アクセスを設定した外部オブジェクトストレージを含むDBFSからアクセスできる他のロケーションにファイルを移動することができます。以下の例では、ワークスペース構築時に設定されたクラウドオブジェクトストレージのロケーションであるDBFSルートに移動しています。

Python
dbutils.fs.mv("file:/tmp/curl-subway.csv", "dbfs:/tmp/subway.csv")

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

クラウドオブジェクトストレージにデータを移動すると、いつもと同じようにデータを読み込むことができるようになります。以下のコードでは、DBFSルートに移動されたCSVデータを読み込んでいます。

Python
df = spark.read.format("csv").option("header", True).load("/tmp/subway.csv")
display(df)

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?