Delta Sharing での一般的な共有の問題のトラブルシューティング
次のセクションでは、共有内のデータにアクセスしようとしたときに発生する可能性がある一般的なエラーについて説明します。
リソース制限の超過エラー
問題 : 共有テーブルに対するクエリでエラー RESOURCE_LIMIT_EXCEEDEDが返されます。
"RESOURCE_LIMIT_EXCEEDED","message":"The table metadata size exceeded limits""RESOURCE_LIMIT_EXCEEDED","message":"The number of files in the table to return exceeded limits, consider contact your provider to optimize the table"
考えられる原因 : 共有テーブルで許可されるメタデータ内のファイル数には制限があります。
推奨される修正 : これらの問題のいずれかを解決する方法については、Databricks ナレッジ ベースの「 RESOURCE_LIMIT_EXCEEDED error when querying a Delta Sharing table 」を参照してください。
AWS S3 バケット名の問題
問題 : ファイルが見つからないか、証明書の例外がスローされるエラー メッセージが表示されます。
Spark エラーの例:
FileReadException: Error while reading file delta-sharing:/%252Ftmp%252Fexample.share%2523example.tpc_ds.example/XXXXXXXXXXXXX/XXXXXXXX.
Caused by: SSLPeerUnverifiedException: Certificate for - <[workspace name].cloud.databricks.com.s3.us-east-1.amazonaws.com> doesn't match any of the subject alternative names [s3.amazonaws.com, *.s3.amazonaws.com…]:
Pandas エラーの例:
FileNotFoundError(path)
FileNotFoundError: https://xxxx.xxxxxx.s3.xx-xxxx-1.amazonaws.com/xxxxxx/part-00000-xxxxx-Amz-Algorithm=Axxxxxx-Amz-Date=xxxxxxxx&X-Amz-SignedHeaders=host&X-Amz-Expires=xxx&X-Amz-Credential=xxxxxxx_request&X-Amz-Signature=xxxxx
Power BI エラーの例:
DataSource.Error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Details:
https://xxxx.xxxxxxxxx.s3.xx-xxxx-1.amazonaws.com/xxxxxxxx/part-00000-xxxxxxx.snappy.parquet
考えられる原因 : 通常、このエラーは、バケット名にドットまたはピリオド表記 ( incorrect.bucket.name.notationなど) が使用されているために表示されます。 これは AWS の制限です。 「AWS バケットの命名規則」を参照してください。
バケット名が正しくフォーマットされている場合でも、このエラーが発生する可能性があります。たとえば、PyCharm でコードを実行すると、SSL エラー ( SSLCertVerificationError ) が発生する可能性があります。
推奨される修正方法 : バケット名で無効な AWS バケット命名表記が使用されている場合は、Unity Catalog と Delta Sharing に別のバケットを使用します。
バケットで有効な命名規則を使用しているにもかかわらず、Python で FileNotFoundError が発生する場合は、デバッグログを有効にして問題を特定します。
import logging
logging.basicConfig(level=logging.DEBUG)
vacuum データファイルの問題
問題 : 「404 指定された [パス|キー] が存在しません」という例外をスローするエラー メッセージが表示されます。
Spark エラーの例:
java.lang.Throwable: HTTP request failed with status: HTTP/1.1 404 The specified path does not exist.
または
HTTP request failed with status: HTTP/1.1 404 Not Found <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message>
考えられる原因 : 通常、このエラーが表示されるのは、署名済み URL に対応するデータ ファイルが共有テーブルで vacuum されており、データ ファイルが履歴テーブル バージョンに属しているためです。
回避策 : 最新のスナップショットをクエリします。
オープンソース Spark でのスキーマ不一致エラー
問題 : オープンソースSpark (OSS) を使用している場合、 Delta Sharingテーブルを読み取るときにスキーマ不一致エラーが表示されます。
エラー例:
py4j.protocol.Py4JJavaError: An error occurred while calling o85.count.: org.apache.spark.SparkException: The schema or partition columns of your Delta table has changed since your DataFrame was created. Please redefine your DataFrame
考えられる原因 : DataFrame の作成後に Delta テーブルのスキーマまたはパーティション列が変更されました。
推奨される修正 : Spark 構成フラグspark.delta.sharing.client.useStructuralSchemaMatchをtrueに設定します:
spark.conf.set("spark.delta.sharing.client.useStructuralSchemaMatch", "true")
共有マテリアライゼーションアセットのアクセス問題
問題 : 共有ビュー、具体化ビュー view、またはストリーミングテーブルに対するクエリでエラー DS_MATERIALIZATION_QUERY_FAILEDが返されます。
"DS_MATERIALIZATION_QUERY_FAILED": "The shared asset could not be materialized due to the asset not being accessible in the materialization workspace. Please ask data provider to contact :re[DB] support to override the materialization workspace."
考えられる原因 : プロバイダーには、共有しようとしている資産に対する読み取り/書き込みアクセス権がありません。
推奨される解決策 : データ プロバイダーに問い合わせて、共有データ資産への読み取り/書き込みアクセス権があることを確認します。
データの実体化中にネットワーク アクセス エラーが発生しています
問題 : 共有データ アセットに対するクエリで、データ プロバイダーのクラウド ストレージへのアクセスに関するエラーが返されます。
There was an issue accessing the data provider's cloud storage. Shared view materialization uses the Serverless compute of data provider's region to perform the materialization. Please contact the data provider to allowlist Serverless compute IPs of their corresponding region to access the view's dependent tables storage location.
考えられる原因 : 実体化されたデータの保存場所には、 Databricksサーバーレス コンピュートによるアクセスを妨げるネットワーク制限 (ファイアウォールやプライベート リンクなど) が設定されています。 ビュー、マテリアライズドビュー、ストリーミングテーブルを共有する場合、データはプロバイダ側で一時的に実体化されます。 マテリアライゼーションの保存場所は、アセットの親スキーマまたはカタログの保存場所です。
推奨される修正 : データ プロバイダーは、ビューの依存テーブルの保存場所にアクセスするために、対応するリージョンのサーバーレス コンピュート IP をホワイトリストに登録する必要があります。 ファイアウォールを構成するには、 「 サーバレス コンピュート アクセス用のファイアウォールの構成 」を参照してください。