Databricks

データ一括読み込みを実行するように Databricks データソースを構成するには、「 Spark 」で説明されているのと同じプロセスを実行します。これは Databricks によって推奨される方法です。

または別の方法として、Databricks API を使用して、データ一括読み込みを実行できます。これを行うには、Virtual DataPort が動作するホスト上で Databricks クライアント をインストールします。これを行うには、以下の手順に従って実施してください。

  1. Python 3 をインストールします。

  2. Python パッケージマネージャー (PIP) をインストールします。これは Python バージョン 3.4 以降にデフォルトで同梱されています。PIP をインストールしていない場合、 このページ からダウンロードできます。

  3. Databricks クライアントをインストールします。これを行うには、コマンドラインを開いて、次のコマンドを実行します。

    pip install databricks-cli
    
  4. Databricks クライアント認証をセットアップします。認証を構成するには、 個人アクセストークン を取得する必要があります。その後、Virtual DataPort の起動に使用するのと同じユーザーアカウントで次のコマンドを実行します。

    databricks configure --token
    

    このコマンドを実行すると、ユーザーのホームディレクトリに .databrickscfg 構成ファイルが作成されます。

  5. 次のコマンドを実行して、すべて正常に動作しているかどうかを確認します。

    dbfs ls
    
  6. 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 bulk data load configuration

Databricks のデータ一括読み込みの構成

実行時に、クエリに Databricks への一括読み込みが含まれる場合、Virtual DataPort は、以下の 2 つの処理を実行します。

  1. 一時データファイルを Databricks ファイルシステム (DBFS) にアップロードします。これを行うために、Virtual DataPort サーバーが動作するホストで dbfs cp ... コマンドをローカルに実行します。

  2. 手順 1 でアップロードされたデータに関連するテーブルを Databricks に作成します。

DBFS での外部ファイルシステムのマウント

Databricks provides its own file system. You can use it to store the data of your tables. You can also use external object storage like AWS S3 buckets, Azure Blob Storage, Azure Data Lake, etc. Mounting object storage to DBFS allows you to access objects in object storage as if they were on the DBFS.

AWS S3 バケットのマウント

このセクションでは、AWS S3 バケットを DBFS にマウントしてアクセスする手順について説明します。マウントは、AWS S3 の場所を参照するポインターになります。

  1. AWS の アクセスキーとシークレットキー ([Access Keys (Access Key ID and Secret Access Key)] セクション) を取得します。

  2. Databricks インスタンスの Web サイト https://<my_databricks_instance>.cloud.databricks.com にアクセスします。

  3. 新しい Python ノートブックを作成します。これを行うには、[Create a Blank Notebook] をクリックします。

  4. 以下の 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))
    
  5. 自分のアクセスキー、シークレットキー、および S3 バケット名の値を設定します。

  6. [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)

注釈

他の外部オブジェクトストレージをマウントできます。詳細については、この リンク をクリックしてください。