我想從 ADB-2 作業區訪問存盤在 ADB-1(Azure 資料塊)作業區的 dbfs 位置中的一些檔案。只是想了解是否可以查詢另一個作業區 dbfs 存盤。我試著用谷歌搜索這個問題很多,但到目前為止還沒有運氣。請幫忙!!
例如 - 在 ADB-1 作業區中,我在 /dbfs/FileStore/Zone1/File1.csv 中有檔案存盤。要從 ADB-2 作業區讀取 File1.csv,怎么做?有什么建議么
uj5u.com熱心網友回復:
Databricks 中有一個API,即DBFS 2.0有一個GET方法。但是限制很少。
- 看下面的演示。假設 dbfs1 是所需檔案所在的位置。您可以使用以下代碼從 2nd Databricks 筆記本中讀取檔案。
import requests
import json
my_json = { "path": "/FileStore/sample1.csv", "offset": 0, "length": 1000000 } #path is from dbfs1
auth = {"Authorization": "Bearer <access_token>"}
#url of databricks workspace where the file is present
response = requests.get('https://<databricks_workspace_url>/api/2.0/dbfs/read', json = my_json, headers=auth).json()
#print(response)
- 回傳的回應是檔案資料作為 base64 編碼字串回傳的物件。

- 您可以使用以下代碼對上面回傳的編碼字串進行解碼。
import base64
encoded_data = response['data']
encoded = encoded_data.encode('ascii')
to_decode = base64.b64decode(encoded)
decoded_data = to_decode.decode('ascii')
#print(decoded_data)

- 由于
decoded_data是一個字串,因此我將其撰寫為名為的文本檔案output.csv,并使用以下代碼將該檔案作為 csv 檔案讀取。
f = open(r'/dbfs/FileStore/tables/output.csv', 'w')
f.write(decoded_data)
f.close()
df = spark.read.format("csv").option("header",True).load("/FileStore/tables/output.csv")
df.show()

筆記:
此程序不適用于鑲木地板檔案。對于其他檔案格式,程序會有所變化(以上是csv檔案的示例,json或其他格式檔案的程序不同)。
Microsoft 檔案中還為使用 DBFS
readAPI 指定了 1MB 的大小限制。因此,您可以不這樣做,而是將檔案下載到本地計算機并將檔案重新上傳到第二個 databricks dbfs,或者將檔案存盤在可以輕松訪問的存盤帳戶中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530104.html
上一篇:AzureBicep-具有集成服務的邏輯應用-在“IntegrationAccountReference”型別的物件上找不到成員“apiVersion”
下一篇:IF陣列中的Excel計數
