讀取數據共享使用三角洲共享開放共享
本文描述了如何讀取數據,與你共享使用三角洲共享公開分享協議。在開放共享,您使用一個憑證文件分享給你的團隊成員的數據提供商獲得安全的讀取訪問共享數據。堅持直到供應商停止共享數據的訪問。更新實時數據在附近。你可以閱讀和共享數據的副本,但你不能修改源數據。
請注意
如果數據共享使用Databricks-to-Databricks三角洲與你分享,你不需要一個憑證文件來訪問數據。說明,請參閱讀取數據共享使用Databricks-to-Databricks三角洲共享。
接下來的小節描述如何訪問和讀取共享數據使用憑證文件在磚,Apache火花,熊貓,BI。三角洲的完整列表共享連接器和如何使用它們的信息,看到了三角洲開源共享文檔。如果你遇到麻煩訪問共享數據,聯係的數據提供者。
請注意
合作夥伴集成,除非特別指出,第三方提供的,你必須有一個帳戶與適當的提供者使用他們的產品和服務。盡管磚最好保持更新這些內容,我們沒有表示關於集成或合作夥伴集成頁麵上的內容的準確性。接觸到適當的關於集成供應商。
在你開始之前
你的團隊的一員必須下載證書文件共享的數據提供者。看到獲得在開放共享模型。
他們應該使用安全通道來與你分享一個文件或文件的位置。
注意,模式命名
information_schema
不能導入目錄metastore統一,因為這模式名稱是保留在統一的目錄。
磚:讀取共享數據使用統一目錄
如果啟用了您的工作區統一目錄,您可以使用磚統一目錄CLI目錄metastore統一創建提供程序對象。然後您可以使用相同的過程管理和訪問共享數據作為一個接受者的股票得到了使用Databricks-to-Databricks分享。
請注意
本節討論如何處理數據與你共享使用開放共享。如果統一啟用您的工作區目錄和數據提供者和你共享數據沒有提供一個證書文件,供應商可能使用Databricks-to-Databricks共享,你應該去相反的指示讀取數據共享使用Databricks-to-Databricks三角洲共享。
權限要求:Metastore管理員或用戶CREATE_PROVIDER
metastore特權。
要創建提供者,您必須訪問下載的證書文件。看到獲得在開放共享模型。
運行以下命令使用磚CLI,替換<提供者名稱>
與你想要的名字給提供者config.share
你下載的證書文件的路徑。
磚unity-catalog提供者創建——名稱<提供者名稱>\——recipient-profile-json-file config.share
你現在可以查看提供者,查看股票提供者與你共享,使用數據瀏覽和訪問數據在這些股票,磚統一目錄CLI、或SQL命令磚筆記本或磚SQL查詢編輯器中,而不必直接引用一個憑證文件。有關詳細說明,請參見如下:
磚:讀取共享數據使用開放共享連接器
本節描述如何使用一個開放共享連接器訪問共享數據使用一個筆記本在你磚的工作區。你或你的團隊的另一個成員存儲DBFS憑證文件,然後使用它來驗證數據提供者的磚帳戶並讀取數據,數據提供商與你共享。
請注意
有兩個其他選項用於讀取共享數據使用磚:
你獲得證書文件和磚為統一啟用工作區目錄。您可以使用統一目錄管理對共享數據的訪問。說明,請參閱磚:讀取共享數據使用統一目錄。
數據提供商使用Databricks-to-Databricks分享,沒有與你們分享一個憑證文件。你必須訪問數據使用統一目錄。說明,請參閱讀取數據共享使用Databricks-to-Databricks三角洲共享。
在本例中,您創建一個筆記本多個單元可以獨立運行。你可以添加筆記本命令序列相同的細胞和運行它們。
步驟1:將證書文件存儲在DBFS (Python指令)
在這個步驟中,您使用Python筆記本在磚存儲憑證文件,這樣用戶在您的團隊可以訪問共享數據。
跳到下一個步驟,如果你或者你的團隊已經存儲在DBFS憑證文件。
在文本編輯器,打開憑證文件。
在你的磚工作區,點擊New >筆記本。
輸入一個名稱。
設置默認語言Python的筆記本。
選擇連接到一個集群的筆記本。選擇一個集群運行磚運行時8.4或以上或集群Apache火花連接器庫安裝。關於集群安裝庫的更多信息,請參閱庫。
點擊創建。
筆記本在記事本編輯器中打開。
使用Python或熊貓訪問共享數據,安裝delta-sharing Python連接器。在筆記本電腦編輯器中,粘貼下麵的命令:
% sh pip安裝delta-sharing
運行單元。
的
delta-sharing
Python庫被安裝在集群如果不是已經安裝了。在一個新細胞,粘貼下麵的命令,上傳的內容在DBFS憑證文件到一個文件夾。替換的變量如下:
< dbfs-path >
:文件夾的路徑你想保存憑證文件< credential-file-contents >
:憑證的內容文件。這不是一個文件路徑,但是複製的文件的內容。證書文件包含JSON定義三個字段:
shareCredentialsVersion
,端點
,bearerToken
。% scala dbutils.fs.put (“< dbfs-path > / config。”、“分享”“< credential-file-contents >”“”)
運行單元。
證書文件上傳後,您可以刪除這個細胞。所有工作空間用戶可以從DBFS讀取證書文件,和證書文件可用在所有集群DBFS和SQL倉庫在工作區中。刪除單元格,單擊x在細胞操作菜單在最右邊。
步驟2:使用一個筆記本列表和閱讀共享表
在這個步驟中,您的表列表分享,或一組共享表和分區,您查詢一個表。
使用Python,分享的表列表。
在一個新細胞,粘貼下麵的命令。取代
< dbfs-path >
與創建的路徑步驟1:將證書文件存儲在DBFS (Python指令)。當代碼運行時,Python讀取證書文件從DBFS集群。在DBFS訪問數據存儲路徑
/ dbfs /
。進口delta_sharing客戶端=delta_sharing。SharingClient(f“/ dbfs / < dbfs-path > / config.share”)客戶端。list_all_tables()
運行單元。
結果是一個數組表,每個表的元數據。下麵的輸出顯示了兩個表:
[10]:[表(name = ' example_table,分享=“example_share_0”模式=“違約”),表(name = ' other_example_table,分享=“example_share_0”模式=“違約”))
如果輸出為空或者不含您期望的表,數據提供者聯係。
查詢一個共享的表。
使用Scala:
在一個新細胞,粘貼下麵的命令。當代碼運行時,憑證文件讀取DBFS JVM。
替換的變量如下:
<配置文件路徑>
:DBFS證書文件的路徑。例如,/ < dbfs-path > / config.share
。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。
% scala spark.read.format (“deltaSharing”) .load(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”).limit (10);
運行單元。每次加載共享表,你看到新鮮的數據來源。
使用SQL:
使用SQL查詢數據,您在工作區中創建一個本地表從共享表,然後查詢當地表。共享數據沒有存儲或在本地緩存表中。每次查詢當地的表,你看共享數據的當前狀態。
在一個新細胞,粘貼下麵的命令。
替換的變量如下:
< local-table-name >
:當地的表的名稱。<配置文件路徑>
:證書文件的位置。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。
% sql DROP TABLE如果存在table_name;使用deltaSharing位置創建表< local-table-name > " <配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”;SELECT * FROM < local-table-name >限製10;
當您運行該命令時,直接查詢共享數據。作為測試,表查詢並返回第一個10個結果。
如果輸出為空或者不包含您期望的數據,數據提供者聯係。
Apache火花:讀取共享數據
按照以下步驟使用火花3訪問共享數據。x或以上。
這些說明假設您已經訪問憑證文件共享的數據提供者。看到獲得在開放共享模型。
使用火花共享表列表
分享的表列表。在接下來的例子中,替換<配置文件路徑>
證書文件的位置。
進口delta_sharing客戶端=delta_sharing。SharingClient(f“<配置文件路徑> / config.share”)客戶端。list_all_tables()
結果是一個數組表,每個表的元數據。下麵的輸出顯示了兩個表:
[10]:[表(name = ' example_table,分享=“example_share_0”模式=“違約”),表(name = ' other_example_table,分享=“example_share_0”模式=“違約”))
如果輸出為空或者不含您期望的表,數據提供者聯係。
訪問共享數據使用火花
運行以下,取代這些變量:
<配置文件路徑>
:證書文件的位置。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。<版本的>
:可選的。的版本表加載數據。前提是數據提供者股票的曆史表。需要delta-sharing-spark
0.5.0或以上。< timestamp-as-of >
:可選的。加載數據的版本之前或在給定的時間戳。前提是數據提供者股票的曆史表。需要delta-sharing-spark
0.6.0或以上。
delta_sharing。load_as_spark(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,版本= <版本- - - - - -作為- - - - - -的>)火花。讀。格式(“deltaSharing”)\。選項(“versionAsOf”,<版本- - - - - -作為- - - - - -的>)\。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)\。限製(10))delta_sharing。load_as_spark(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,時間戳= <時間戳- - - - - -作為- - - - - -的>)火花。讀。格式(“deltaSharing”)\。選項(“timestampAsOf”,<時間戳- - - - - -作為- - - - - -的>)\。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)\。限製(10))
運行以下,取代這些變量:
<配置文件路徑>
:證書文件的位置。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。<版本的>
:可選的。的版本表加載數據。前提是數據提供者股票的曆史表。需要delta-sharing-spark
0.5.0或以上。< timestamp-as-of >
:可選的。加載數據的版本之前或在給定的時間戳。前提是數據提供者股票的曆史表。需要delta-sharing-spark
0.6.0或以上。
火花。讀。格式(“deltaSharing”)。選項(“versionAsOf”,<版本- - - - - -作為- - - - - -的>)。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)。限製(10)火花。讀。格式(“deltaSharing”)。選項(“timestampAsOf”,<版本- - - - - -作為- - - - - -的>)。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)。限製(10)
訪問共享使用火花更改數據提要
如果表曆史上一直與你分享和改變數據提要(CDF)啟用源表,您可以訪問更改數據提要通過運行以下,取代這些變量。需要delta-sharing-spark
0.5.0或以上。
必須提供一個且隻有一個啟動參數。
<配置文件路徑>
:證書文件的位置。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。< starting-version >
:可選的。查詢的起始版本、包容。指定為長。< ending-version >
:可選的。的結局版本查詢、包容。如果結局版本沒有提供,API使用最新的表格版本。< starting-timestamp >
:可選的。查詢的起始時間戳,這是轉換為一個版本創建大於或等於這個時間戳。指定為字符串的格式yyyy-mm-ddhh: mm: ss (.fffffffff)
。< ending-timestamp >
:可選的。查詢的結束時間戳,這是轉換為一個版本之前創建或等於這個時間戳。指定為字符串的格式yyyy-mm-ddhh: mm: ss (.fffffffff)
delta_sharing。load_table_changes_as_spark(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,starting_version= <開始- - - - - -版本>,ending_version= <結束- - - - - -版本>)delta_sharing。load_table_changes_as_spark(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,starting_timestamp= <開始- - - - - -時間戳>,ending_timestamp= <結束- - - - - -時間戳>)火花。讀。格式(“deltaSharing”)。選項(“readChangeFeed”,“真正的”)\。選項(“statingVersion”,<開始- - - - - -版本>)\。選項(“endingVersion”,<結束- - - - - -版本>)\。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)火花。讀。格式(“deltaSharing”)。選項(“readChangeFeed”,“真正的”)\。選項(“startingTimestamp”,<開始- - - - - -時間戳>)\。選項(“endingTimestamp”,<結束- - - - - -時間戳>)\。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)
火花。讀。格式(“deltaSharing”)。選項(“readChangeFeed”,“真正的”)。選項(“statingVersion”,<開始- - - - - -版本>)。選項(“endingVersion”,<結束- - - - - -版本>)。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)火花。讀。格式(“deltaSharing”)。選項(“readChangeFeed”,“真正的”)。選項(“startingTimestamp”,<開始- - - - - -時間戳>)。選項(“endingTimestamp”,<結束- - - - - -時間戳>)。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)
如果輸出為空或者不包含您期望的數據,數據提供者聯係。
訪問一個共享表使用火花結構化流
如果表曆史是與你分享,你可以流讀取共享數據。需要delta-sharing-spark
0.6.0或以上。
支持選項:
ignoreDeletes
:忽略事務刪除數據。ignoreChanges
:如果文件重寫處理文檔更新源表中的數據修改操作,比如更新
,合並成
,刪除
(分區),或覆蓋
。不變行仍然可以發出。所以你的下遊消費者應該能夠處理重複。刪除不是下遊傳播。ignoreChanges
包容ignoreDeletes
。因此如果你使用ignoreChanges
,你流將不會被刪除或更新源表。startingVersion
:從共享表版本。所有表變化從這個版本(包容)將讀取流源。startingTimestamp
:從時間戳。所有表更改後承諾或時間戳(包容)將讀取流源。例子:“2023-01-0100:00:00.0”
。maxFilesPerTrigger
:新文件的數量被認為是在每個micro-batch。maxBytesPerTrigger
:在每個micro-batch被處理的數據量。這個選項設置一個“軟馬克斯”,這意味著一個批處理過程大約這個過程的數據量,可能超過極限為了使流查詢前進情況下的最小輸入單位超過這個極限。readChangeFeed
:流讀共享表的數據提要的變化。
不支持的選項:
Trigger.availableNow
樣品結構流查詢
火花。readStream。格式(“deltaSharing”)。選項(“startingVersion”,0)。選項(“ignoreChanges”,真正的)。選項(“maxFilesPerTrigger”,10)。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)
火花。readStream。格式(“deltaSharing”)\。選項(“startingVersion”,0)\。選項(“ignoreDeletes”,真正的)\。選項(“maxBytesPerTrigger”,10000年)\。負載(“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)
另請參閱流媒體在磚。
熊貓:讀取共享數據
按照以下步驟在熊貓0.25.3以上訪問共享數據。
這些說明假設您已經訪問憑證文件共享的數據提供者。看到獲得在開放共享模型。
使用熊貓共享表列表
列出的表,運行以下,取代<配置文件路徑> / config.share
證書文件的位置。
進口delta_sharing客戶端=delta_sharing。SharingClient(f“<配置文件路徑> / config.share”)客戶端。list_all_tables()
如果輸出為空或者不含您期望的表,數據提供者聯係。
訪問共享數據使用熊貓
在大熊貓使用Python訪問共享數據,運行以下,替換的變量如下:
<配置文件路徑>
:證書文件的位置。<共享名>
的值:分享=
為表。<模式名稱>
的值:模式=
為表。<表名稱>
的值:name =
為表。
進口delta_sharingdelta_sharing。load_as_pandas(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”)
訪問一個共享使用熊貓更改數據提要
訪問共享表的更改數據提要大熊貓使用Python運行以下,替換的變量如下。改變數據可能不可用,取決於是否數據提供商共享表的更改數據提要。
< starting-version >
:可選的。查詢的起始版本、包容。< ending-version >
:可選的。的結局版本查詢、包容。< starting-timestamp >
:可選的。查詢的起始時間戳。這是轉換為一個版本創建大於或等於這個時間戳。< ending-timestamp >
:可選的。查詢的結束時間戳。這是轉化為之前創建一個版本或者等於這個時間戳。
進口delta_sharingdelta_sharing。load_table_changes_as_pandas(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,starting_version= <開始- - - - - -版本>,ending_version= <開始- - - - - -版本>)delta_sharing。load_table_changes_as_pandas(f“<配置文件路徑> # <共享名>。<模式名稱>。<表名稱>”,starting_timestamp= <開始- - - - - -時間戳>,ending_timestamp= <結束- - - - - -時間戳>)
如果輸出為空或者不包含您期望的數據,數據提供者聯係。