Databricks API と DBFS を使用した一括読み込み¶
Databricks API を使用してデータ一括読み込みを実行できます。
重要
セットアップは簡単ですが、数百万行以上を読み込む場合、速度は「 Databricks 」セクションで説明する代替方法よりも大幅に遅くなります。
一括読み込みを行うには、Virtual DataPort が動作するホストで以下の手順に従います。
Python 3 をインストールします。
Python パッケージマネージャー (PIP) をインストールします。これは Python バージョン 3.4 以降にデフォルトで同梱されています。PIP をインストールしていない場合、 このページ からダウンロードしてインストールできます。
コマンドラインで以下のコマンドを実行して Databricks クライアント をインストールします。
pip install databricks-cli
Databricks クライアント認証をセットアップします。認証を構成するには、 個人アクセストークン を取得する必要があります。その後、Virtual DataPort の起動に使用する場合と同じユーザーアカウントで次のコマンドを実行します。
databricks configure --token
このコマンドを実行すると、ユーザーのホームディレクトリに
.databrickscfg
構成ファイルが作成されます。次のコマンドを実行して、すべて正常に動作しているかどうかを確認します。
dbfs ls
Administration Tool で JDBC データソースを編集して、[Read & Write] タブをクリックします。[Use bulk data load APIs] をチェックして、以下の情報を入力します。
Databricks executable location:
dbfs
と入力します。これは Databricks クライアント (dbfs
) へのパスです。このユーティリティは、通常、システムパスに含まれているため、ファイルのフルパスを入力する必要はありません。DBFS URI: Virtual DataPort がデータファイルをアップロードする URI です。次に例を示します。
dbfs://user/databricks/warehouse
Server time zone: Databricks サーバーのタイムゾーンを選択します。
Table format: Databricks でテーブルを作成するために使用するファイル形式を選択します。
実行時に、クエリに Databricks への一括読み込みが含まれる場合、Virtual DataPort は、以下の 2 つの処理を実行します。
一時データファイルを Databricks ファイルシステム (DBFS) にアップロードします。これを行うために、Virtual DataPort サーバーが動作するホストで
dbfs cp ...
コマンドをローカルに実行します。手順 1 でアップロードされたデータに関連するテーブルを Databricks に作成します。
DBFS での外部ファイルシステムのマウント¶
Databricks は独自のファイルシステムを提供しています。このシステムを使用して、テーブルのデータを保存できます。また、「AWS S3 バケット」、「Azure Blob Storage」、「Azure Data Lake」などの外部オブジェクトストレージも使用できます。オブジェクトストレージを DBFS にマウントすることによって、DBFS に存在しているかのようにオブジェクトストレージ内のオブジェクトにアクセスできます。
AWS S3 バケットのマウント
このセクションでは、AWS S3 バケットを DBFS にマウントしてアクセスする手順について説明します。マウントは、AWS S3 の場所を参照するポインターになります。
AWS の アクセスキーとシークレットキー ([Access Keys (Access Key ID and Secret Access Key)] セクション) を取得します。
Databricks インスタンスの Web サイト``https://<my_databricks_instance>.cloud.databricks.com`` にアクセスします。
新しい Python ノートブックを作成します。これを行うには、[Create a Blank Notebook] をクリックします。
以下の Python ノートブックをコピーして貼り付けます。
ACCESS_KEY = "<aws-access-key>" SECRET_KEY = "<aws-secret-key>" AWS_BUCKET_NAME = "<aws-s3-bucket-name>" ENCODED_SECRET_KEY = SECRET_KEY.replace("/", "%2F") MOUNT_NAME = "s3_bucket" dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_BUCKET_NAME), "/mnt/%s" % MOUNT_NAME) display(dbutils.fs.ls("/mnt/%s" % MOUNT_NAME))
自分のアクセスキー、シークレットキー、および S3 バケット名の値を設定します。
[Run All] をクリックします。
ノートブックを実行した後、S3 バケットが、パス dbfs:/mnt/s3_bucket/
にマウントされます。
注釈
S3 バケットと Databricks インスタンスは同じ AWS リージョンで動作する必要があります。そうしないと、データを Databricks に挿入するプロセスの速度が大幅に低下します。
AWS S3 バケットのアンマウント
AWS S3 バケットをアンマウントするには、新しい Python ノートブックを次の内容で作成します。
MOUNT_NAME = "s3_bucket" dbutils.fs.unmount("/mnt/%s" % MOUNT_NAME)
注釈
他の外部オブジェクトストレージをマウントできます。詳細については、この リンク をクリックしてください。