この記事では、 OpenSharing を使用して共有されているデータに対して Apache Spark を使用してクエリを実行する構文の例を示します。 DataFrame 操作のフォーマット オプションとして、deltasharing キーワードを使用します。
共有データに対してクエリを実行するためのその他のオプション
次の例のように、メタストアに登録されている OpenSharing カタログで共有テーブル名を使用するクエリを作成することもできます。
SQL
SELECT * FROM shared_table_name
Python
spark.read.table("shared_table_name")
Azure Databricksでの OpenSharing の構成と共有テーブル名を使用したデータのクエリの詳細については、「Databricks-to-Databricks OpenSharing (受信者向け)」を参照してください。
構造化ストリーミングを使用すると、共有テーブルのレコードを段階的に処理できます。 構造化ストリーミングを使用するには、テーブルの履歴共有を有効にする必要があります。 ALTER SHAREを参照してください。 履歴共有には、Databricks Runtime 12.2 LTS 以降が必要です。
共有テーブルでソース Delta テーブルで変更データ フィードが有効になっており、共有で履歴が有効になっている場合は、構造化ストリーミングまたはバッチ操作で OpenSharing 共有を読み取る際に変更データ フィードを使用できます。 Azure Databricksでの変更データ フィードの使用を参照してください。
OpenSharing format キーワードを使用した読み取り
次の例に示すように、deltasharing キーワードは Apache Spark の DataFrame 読み取り操作でサポートされています。
df = (spark.read
.format("deltasharing")
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)
OpenSharing 共有テーブルの変更データ フィードの読み取り
履歴が共有され変更データ フィードが有効になっているテーブルの場合は、Apache Spark DataFrame を使用して変更データ フィード レコードを読み取ることができます。 履歴共有には、Databricks Runtime 12.2 LTS 以降が必要です。
df = (spark.read
.format("deltasharing")
.option("readChangeFeed", "true")
.option("startingTimestamp", "2021-04-21 05:45:46")
.option("endingTimestamp", "2021-05-21 12:00:00")
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)
構造化ストリーミングを使用した OpenSharing 共有テーブルの読み取り
履歴が共有されているテーブルの場合は、共有テーブルを構造化ストリーミングのソースとして使用できます。 履歴共有には、Databricks Runtime 12.2 LTS 以降が必要です。
streaming_df = (spark.readStream
.format("deltasharing")
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)
# If CDF is enabled on the source table
streaming_cdf_df = (spark.readStream
.format("deltasharing")
.option("readChangeFeed", "true")
.option("startingTimestamp", "2021-04-21 05:45:46")
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)