WASB を使用して Azure Blob Storage に接続する (レガシ)
Microsoft は、 Azure Blob Storage の Windows Azure Storage Blob ドライバー (WASB) を非推奨にし、Azure Blob Filesystem ドライバー (ABFS) を優先しました。 「Azure Data Lake Storage Gen2 と Blob Storage に接続する」を参照してください。 ABFSには、WASBに比べて多くの利点があります。 ABFS に関する Azure のドキュメントを参照してください。
この記事では、WASB ドライバーを使用するコードの保守に関するドキュメントを提供します。 Databricks では、Azure Blob Storage へのすべての接続に ABFS を使用することをお勧めします。
Databricks での WASB 資格情報の構成
WASB ドライバーを使用すると、 ストレージ アカウント アクセス キー または Shared Access Signature (SAS) を使用できます。 (パブリック ストレージ アカウントからデータを読み取る場合は、資格情報を構成する必要はありません)。
Databricks では、Databricks で資格情報を渡す必要がある場合は常に シークレット を使用することをお勧めします。 シークレットは、含まれている シークレットスコープにアクセスできるすべてのユーザーが使用できます。
資格情報を渡すことができます。
- Spark 構成のクラスターにスコープが設定されています
- ノートブックにスコープを設定
Databricks では、WASB と同様のアクセス パターンを提供する Azure Blob Storage へのアクセスに ABFS を使用するように、すべての接続をアップグレードすることをお勧めします。 ABFS を使用して、Azure Blob Storage と対話する際のセキュリティとパフォーマンスを最大限に高めます。
クラスターの資格情報を構成するには、クラスターの作成時にSpark構成プロパティを設定します。クラスター レベルで設定された資格情報は、そのクラスターにアクセスできるすべてのユーザーが使用できます。
ノートブック スコープの資格情報を構成するには、 spark.conf.set()
. ノートブック レベルで渡された資格情報は、そのノートブックにアクセスできるすべてのユーザーが使用できます。
ストレージ アカウント アクセス キーを使用した Azure Blob Storage 資格情報の設定
ストレージ アカウント アクセス キーは、ストレージ アカウント内のすべてのコンテナーへのフル アクセスを付与します。 このパターンはプロトタイピングには便利ですが、本番運用データへの無制限のアクセスを許可することに伴うリスクを軽減するために、本番運用での使用は避けてください。
spark.conf.set(
"fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
"<storage-account-access-key>"
)
アカウント キー URI をアップグレードして ABFS を使用できます。 詳細については、「Azure Data Lake Storage Gen2 Storage と Blob Storage への接続」を参照してください。
Shared Access Signature (SAS) を使用した Azure Blob Storage 資格情報の設定
SAS トークンを使用して、特定の時刻に有効期限が切れるストレージ アカウント内の 1 つのコンテナーに対する制限付きアクセスを構成できます。
spark.conf.set(
"fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net",
"<sas-token-for-container>"
)
DataFrame API を使用して Azure Blob Storage にアクセスする
Apache Spark DataFrame APIは、ノートブック レベルまたはクラスター レベルで構成された資格情報を使用できます。すべての WASB ドライバー URI は、コンテナーとストレージ アカウントの名前を指定します。 ディレクトリ名はオプションであり、コンテナを基準にして複数のネストされたディレクトリを指定できます。
wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>
次のコード例は、DataFrames API および Databricks ユーティリティ (dbutils
) 参照を使用して、コンテナ内の名前付きディレクトリと対話する方法を示しています。
df = spark.read.format("parquet").load("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")
dbutils.fs.ls("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")
WASB ではなく ABFS を更新するには、URI を更新します。 詳細については、「Azure ストレージへのアクセス」を参照してください
SQL を使用して Azure Blob Storage にアクセスする
ノートブックのセッション構成で設定された資格情報は、 Spark SQLを実行しているノートブックからはアクセスできません。
クラスター構成でアカウント アクセス キーまたは SASSpark SQL を設定した後、Azure Blob Storage で標準の クエリを使用できます。
-- SQL
CREATE DATABASE <db-name>
LOCATION "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/";
WASB の代わりに ABFS を更新するには、URI を更新します。「Azure ストレージへのアクセス」を参照してください