DatabricksでのSpark用Snowflakeの構成

Databricksバージョン4.2のネイティブSnowflakeコネクターを使用すると、DatabricksアカウントでライブラリをインポートせずにSnowflakeとの間でデータを読み書きできます。Databricksの古いバージョンでは、SparkコネクターのライブラリをDatabricksクラスターにインポートする必要がありました。

コネクターは、ユーザーが各システムで実行する処理の部分を指定する必要なく、SparkとSnowflakeに処理を自動的に分散します。クエリは、Snowflakeの自動クエリプッシュダウン最適化の恩恵も受けます。

このトピックの内容:

前提条件

  • Databricksアカウントがあり、Databricks Runtimeバージョン4.2以降を使用している必要があります。追加条件:

    • DatabricksシークレットマネージャーでSnowflakeユーザーログイン名とパスワードを既に設定している必要があります。 dbutils.secrets.get(...) を呼び出してログインとパスワードを読み取ります。Databricksシークレットマネージャーの詳細については、https://docs.databricks.com/user-guide/secrets/index.htmlをご参照ください。

  • Snowflakeアカウントが必要です。このアカウントから読み書きを行うには、次の情報が必要です。

    • Snowflakeアカウント用の URL。

    • アカウントに接続するユーザーのログイン名とパスワード。

    • 接続後にセッションに使用するデフォルトのデータベースとスキーマ。

    • 接続後にセッションに使用するデフォルトの仮想ウェアハウス。

  • 接続で使用されるロールには、Databricksを介して読み書きを行うテーブルを含むスキーマに対する USAGE および CREATE STAGE 権限が必要です。

Databricks Snowflakeコネクタードキュメントへのアクセス

Databricks Snowflakeコネクターの主要なドキュメントは、Databricksウェブサイトで入手できます。ドキュメントには、ScalaまたはPythonノートブックがSparkからSnowflakeにデータを送信したり、SparkからSnowflakeにデータを送信するために使用するコマンドを示す例が含まれています。

詳細については、 データソース--- Snowflake をご参照ください。

長時間実行クエリ用の外部ロケーションの準備

一部のジョブが36時間を超える場合は、SnowflakeとSpark間のデータ交換に使用する外部の場所を準備することを検討します。詳細については、 「ファイル用の外部の場所の準備」をご参照ください。

Databricksのクエリプッシュダウン

Sparkクエリは、Snowflakeの自動クエリプッシュダウン最適化の恩恵を受けることで、パフォーマンスが向上します。デフォルトでは、SnowflakeクエリプッシュダウンはDatabricksで有効化されています。

クエリプッシュダウンの詳細については、 Sparkクエリ処理をSnowflake にプッシュする (Snowflakeブログ)をご参照ください。