磚連接的引用

請注意

本文將介紹磚磚運行13.0和更高版本的連接。

學習如何快速開始使用磚磚運行時連接13.0和更高版本,看看磚連接

對磚連接磚之前運行時版本的信息,明白了磚磚運行時的12.2 LTS和較低的連接

磚允許您連接到連接等流行的ide Visual Studio代碼和PyCharm,筆記本電腦服務器和其他自定義應用程序數據磚集群。

本文闡述了磚連接是如何工作的,走你通過與磚的步驟開始連接,並解釋了如何使用磚連接時解決了可能出現的問題。

概述

磚磚運行時連接是一個客戶端庫。它允許您使用火花api編寫工作和遠程數據磚集群上運行它們,而不是在當地引發會話。

例如,當您運行DataFrame命令spark.read.format (…) .load (…) .groupBy (…) .agg(…),告訴()使用磚連接的邏輯表示命令發送到服務器運行在磚火花遠程集群上執行。

磚連接,您可以:

  • 運行大型火花從任何Python應用程序工作。任何你可以進口pyspark現在,您可以運行火花工作直接從您的應用程序,而不需要安裝任何IDE插件或使用火花提交腳本。

    請注意

    磚磚運行時連接13.0和更高版本目前僅支持運行Python應用程序。

  • 單步調試和調試代碼在IDE甚至在處理遠程集群。

  • 快速迭代開發庫。你不需要重新啟動集群在磚連接改變Python庫依賴關係之後,因為每個客戶端會話集群中是相互孤立的。

  • 關閉閑置集群沒有失去工作。因為客戶端應用程序是與集群脫鉤,這是影響集群重啟或升級,這通常會導致你失去所有的變量,抽樣和DataFrame對象定義在一個筆記本上。

磚運行時的13.0和更高版本,磚連接現在建立在開源引發連接。火花連接為Apache火花,引入了一個解耦的客戶機-服務器體係結構允許遠程連接火花集群使用DataFrame API和未解決的邏輯計劃協議。與這種“V2”架構基於火花連接,磚連接成為一個簡單易用的瘦客戶機。火花到處都可以嵌入連接連接到磚:在ide中,筆記本電腦,和應用程序,允許個人用戶和合作夥伴建立新的基於磚Lakehouse(互動)的用戶體驗。關於火花連接的更多信息,請參閱引入火花連接

需求

本節列出了磚的要求連接。

  • 磚工作區和其相應的賬戶為統一啟用目錄。看到開始使用統一目錄為統一啟用一個工作區目錄

  • 磚的集群運行時安裝13.0或更高版本。

  • 隻有兼容統一目錄支持集群。其中包括集群分配或共享訪問模式。看到集群訪問模式是什麼?

  • 你必須在你的開發機器上安裝Python 3,和你的客戶的小版本的Python安裝必須一樣的小磚集群的Python版本。下麵的表顯示了與每個磚安裝Python版本運行時。

    磚的運行時版本的

    Python版本

    13.2毫升,13.2

    3.10

    13.1毫升,13.1

    3.10

    13.0毫升,13.0

    3.10

    請注意

    如果你想使用PySpark udf,重要的是您的開發機器的小版本的Python安裝匹配的小版本的Python附帶磚在集群上運行時安裝。

  • 磚強烈建議你有一個Python虛擬環境為每個Python版本激活與磚連接使用。Python虛擬環境幫助確保您使用正確的版本的Python和磚連接在一起。這可以幫助減少或縮短解決相關技術問題。

    例如,如果您正在使用venv開發機器和集群上運行Python 3.10中,您必須創建一個venv環境的版本。下麵的示例命令生成腳本激活venv環境與Python 3.10,然後這個命令這些腳本在一個隱藏文件夾命名的地方.venv在當前工作目錄:

    # Linux和macOSpython3.10 - m venv。/ .venv#窗口python3.10 - m venv。\。venv

    使用這些腳本激活venv環境,看到venvs如何工作

  • 磚連接主要和次要的包的版本應該匹配您的磚運行時版本。磚建議你總是使用最新的包磚連接相匹配你的磚的運行時版本。例如,當你使用一個磚13.1集群運行時,您還應該使用databricks-connect = = 13.1 . *包中。

    請注意

    看到磚連接的發布說明可用數據磚連接的列表發布和維護更新。

    使用最新的包磚連接相匹配你的磚的運行時版本並不是一個要求。13.0磚開始運行時,您可以使用磚連接方案對所有版本的磚以上運行時版本的磚的連接方案。然而,如果您想要使用特性在以後版本的磚運行時,您必須升級磚連接相應的包。

設置客戶端

完成以下步驟來設置數據磚的本地客戶端連接。

請注意

在你開始之前設置本地磚連接的客戶端,您必須符合要求的磚的連接。

提示

如果你已經安裝了磚擴展Visual Studio代碼,您不需要遵循這些設置指令。

磚擴展Visual Studio代碼已經內置支持磚磚連接運行時13.0和更高版本。跳到運行或調試與磚連接的Python代碼在磚的文檔擴展Visual Studio代碼。

步驟1:安裝磚連接的客戶端

  1. 與你的虛擬環境激活,卸載PySpark,如果已經安裝,通過運行卸載命令。這是必需的,因為databricks-connect包與PySpark衝突。有關詳細信息,請參見衝突PySpark安裝。檢查PySpark是否已經安裝,運行顯示命令。

    # PySpark已經安裝?pip3顯示pyspark#卸載PySparkpip3卸載pyspark
  2. 與虛擬環境仍然激活,安裝磚連接的客戶端運行安裝命令。使用——升級選擇升級任何現有的客戶端安裝指定的版本。

    pip3安裝,升級“databricks-connect = = 13.1 *”。#或X.Y.*to match your cluster version.

    請注意

    磚建議你添加“dot-asterisk”符號來指定databricks-connect = = X.Y. *而不是databricks-connect = X.Y,確保最新的安裝包。雖然這不是一個要求,它有助於確保您可以使用最新的支持集群功能。

步驟2:配置連接屬性

在本節中,您配置屬性之間建立一個連接磚連接和遠程數據磚的集群。這些屬性包括驗證磚與集群的設置。

開始對磚磚連接運行時13.1和更高版本,磚包括連接磚SDK為Python。這個SDK實現磚客戶端統一身份驗證標準,統一和一致的體係結構和編程方法來驗證。這種方法使得建立和自動化驗證磚更集中的和可預測的。它允許您配置數據磚身份驗證一次,然後使用該配置多個磚工具和sdk沒有進一步驗證配置更改。

請注意

磚磚13.0運行時僅支持的連接磚個人訪問令牌認證進行身份驗證。

  1. 收集以下配置屬性。

  2. 中配置的連接代碼。按照以下順序磚連接搜索配置屬性,直到找到他們。一旦它找到它們,它停止搜索剩餘的選項:

    1. 磚個人訪問令牌的身份驗證,直接連接屬性的配置,通過指定DatabricksSession

      這個選項,適用於磚個人訪問令牌認證,指定工作區實例名,磚的個人訪問令牌,集群的ID。

      下麵的代碼示例演示如何初始化DatabricksSession類磚個人訪問令牌的身份驗證。

      磚不建議您直接在代碼中指定這些連接屬性。相反,磚建議通過環境變量或配置文件配置屬性,如後所述選項。下麵的代碼示例假設您提供一些實施建議retrieve_ *函數自己獲取必要的屬性從用戶或其他配置存儲,如AWS係統存儲管理器參數

      #在builder.remote通過設置字段:databricks.connect進口DatabricksSession火花=DatabricksSession構建器遠程(主機=f“https://{retrieve_workspace_instance_name()},令牌=retrieve_token(),cluster_id=retrieve_cluster_id())getOrCreate()#,或者通過使用磚SDK的配置類:databricks.connect進口DatabricksSessiondatabricks.sdk.core進口配置配置=配置(主機=f“https://{retrieve_workspace_instance_name()},令牌=retrieve_token(),cluster_id=retrieve_cluster_id())火花=DatabricksSession構建器sdkConfig(配置)getOrCreate()#,或者指定一個配置概要文件和磚# cluster_id字段分別:databricks.connect進口DatabricksSessiondatabricks.sdk.core進口配置配置=配置(配置文件=“<配置文件名稱>”,cluster_id=retrieve_cluster_id())火花=DatabricksSession構建器sdkConfig(配置)getOrCreate()#,或通過設置在builder.remote引發連接連接字符串:databricks.connect進口DatabricksSessionworkspace_instance_name=retrieve_workspace_instance_name()令牌=retrieve_token()cluster_id=retrieve_cluster_id()火花=DatabricksSession構建器遠程(f“sc: / /{workspace_instance_name}:443 /令牌={令牌};x-databricks-cluster-id ={cluster_id})getOrCreate()
    2. 對於所有磚身份驗證類型,磚配置概要文件的名稱,指定使用概要文件()

      這個選項,創建或確定一個磚配置概要文件包含字段cluster_id和任何其他字段是必需的磚驗證類型您想要使用。然後設置此配置概要文件的名稱配置類。

      請注意

      您可以使用身份驗證登錄命令的——configure-cluster選擇在磚CLI版本0.200.1以上automtically添加cluster_id領域一個新的或現有的配置概要文件。有關更多信息,運行命令身份驗證登錄- h

      此外,您可以指定cluster_id分別從配置概要文件。而不是直接在代碼中指定集群ID,以下代碼示例假設您提供一些實施建議retrieve_cluster_id函數自己集群ID從用戶或其他配置存儲,如AWS係統存儲管理器參數

      例如:

      #指定一個磚配置概要文件包含# cluster_id字段:databricks.connect進口DatabricksSession火花=DatabricksSession構建器配置文件(“<配置文件名稱>”)getOrCreate()
    3. 磚個人訪問令牌認證,SPARK_REMOTE環境變量

      這個選項,適用於磚個人訪問令牌認證,設置SPARK_REMOTE環境變量如下字符串,用適當的值替換占位符。

      sc:/ / <工作空間- - - - - -實例- - - - - -的名字>:443年/;令牌= <訪問- - - - - -令牌- - - - - -價值>;x- - - - - -- - - - - -集群- - - - - -id= <集群- - - - - -id>

      然後初始化DatabricksSession類如下:

      databricks.connect進口DatabricksSession火花=DatabricksSession構建器getOrCreate()

      設置環境變量,看你的操作係統的文檔。

    4. 對於所有磚的身份驗證類型,DATABRICKS_CONFIG_PROFILE環境變量

      這個選項,創建或確定一個磚配置概要文件包含字段cluster_id和任何其他字段是必需的磚驗證類型您想要使用。

      請注意

      您可以使用身份驗證登錄命令的——configure-cluster選擇在磚CLI版本0.200.1以上automtically添加cluster_id領域一個新的或現有的配置概要文件。有關更多信息,運行命令身份驗證登錄- h

      設置DATABRICKS_CONFIG_PROFILE環境變量來此配置概要文件的名稱。然後初始化DatabricksSession類如下:

      databricks.connect進口DatabricksSession火花=DatabricksSession構建器getOrCreate()

      設置環境變量,看你的操作係統的文檔。

    5. 對於所有磚身份驗證類型,一個環境變量為每個連接屬性

      這個選項設置DATABRICKS_CLUSTER_ID環境變量和其他必要的環境變量磚驗證類型您想要使用。然後初始化DatabricksSession類如下:

      databricks.connect進口DatabricksSession火花=DatabricksSession構建器getOrCreate()

      設置環境變量,看你的操作係統的文檔。

    6. 對於所有磚身份驗證類型,磚配置概要文件命名默認的

      這個選項,創建或確定一個磚配置概要文件包含字段cluster_id和任何其他字段是必需的磚驗證類型您想要使用。命名這個配置概要文件默認的

      請注意

      您可以使用身份驗證登錄命令的——configure-cluster選擇在磚CLI版本0.200.1以上automtically添加cluster_id場的默認的配置概要文件。有關更多信息,運行命令身份驗證登錄- h

      然後初始化DatabricksSession類如下:

      databricks.connect進口DatabricksSession火花=DatabricksSession構建器getOrCreate()
  3. 如果你選擇使用磚個人訪問令牌認證包括身份驗證,您可以使用pyspark實用程序來測試連接磚集群如下。

    • 與您的虛擬環境仍然激活,運行以下命令:

      如果你設置SPARK_REMOTE環境變量,運行以下命令:

      pyspark

      如果你沒有設置SPARK_REMOTE環境變量,運行以下命令:

      pyspark——遠程sc: / / < workspace-instance-name >: 443 /;令牌= < access-token-value >; x-databricks-cluster-id = < cluster-id >”
    • 火花殼出現,例如:

      Python 3.10……(叮當聲……]on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
    • > > >提示,運行一個簡單的PySpark命令,如spark.range(10),告訴()。如果沒有錯誤,你已經成功連接。

    • 如果您已經成功連接,阻止引發殼,出版社Ctrl+dCtrl+z或運行該命令辭職()退出()

使用磚連接

這些部分描述了如何配置許多流行的ide和筆記本使用磚連接的客戶端服務器。或者你可以使用內置的火花殼。

與Python JupyterLab

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

使用磚聯係JupyterLab和Python,遵循這些指令。

  1. 與您的Python安裝JupyterLab,虛擬環境激活,從你的終端或命令提示符運行以下命令:

    pip3安裝jupyterlab
  2. 開始在您的web瀏覽器中JupyterLab,運行以下命令從你激活Python虛擬環境:

    jupyter實驗室

    如果JupyterLab不出現在你的web瀏覽器,複製開頭的URL本地主機127.0.0.1從你的虛擬環境,並輸入您的web瀏覽器的地址欄。

  3. 創建一個新的筆記本:在JupyterLab,點擊File > New >筆記本在主菜單中,選擇Python 3 (ipykernel)並點擊選擇

  4. 在筆記本的第一個細胞中,輸入的示例代碼或您自己的代碼。如果您使用您自己的代碼,至少你必須初始化DatabricksSession所示的示例代碼

  5. 筆記本,點擊Run >運行所有細胞

  6. 調試筆記本,點擊錯誤(啟用調試器旁邊)圖標Python 3 (ipykernel)在筆記本的工具欄。設置一個或多個斷點,然後單擊Run >運行所有細胞

  7. 關閉JupyterLab,點擊文件>關閉。如果JupyterLab進程仍在運行在你的終端或命令提示符下,停止這一過程按Ctrl+c然後進入y來確認。

更具體的調試說明,請參閱調試器

經典與Python Jupyter筆記本

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

使用磚聯係經典Jupyter筆記本和Python,遵循這些指令。

  1. 與您的Python安裝經典Jupyter筆記本,虛擬環境激活,從你的終端或命令提示符運行以下命令:

    pip3安裝筆記本
  2. 開始經典Jupyter筆記本在您的web瀏覽器中運行以下命令從你激活Python虛擬環境:

    jupyter筆記本

    如果經典Jupyter筆記本沒有出現在您的web瀏覽器,複製開頭的URL本地主機127.0.0.1從你的虛擬環境,並輸入您的web瀏覽器的地址欄。

  3. 創建一個新的筆記本:在經典Jupyter筆記本文件選項卡上,單擊新的Python 3 > (ipykernel)

  4. 在筆記本的第一個細胞中,輸入的示例代碼或您自己的代碼。如果您使用您自己的代碼,至少你必須初始化DatabricksSession所示的示例代碼

  5. 筆記本,點擊細胞>運行所有

  6. 調試筆記本,添加以下代碼行一開始你的筆記本:

    IPython.core.debugger進口set_trace

    然後調用set_trace ()進入調試語句筆記本執行。

  7. 關閉經典Jupyter筆記本,點擊文件>關閉和停止。如果經典Jupyter筆記本進程仍在運行在你的終端或命令提示符下,停止這一過程按Ctrl+c然後進入y來確認。

Visual Studio和Python代碼

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

提示

磚擴展Visual Studio代碼已經內置支持磚磚連接運行時13.0和更高版本。看到運行或調試與磚連接的Python代碼在磚的文檔擴展Visual Studio代碼。

使用磚與Visual Studio和Python代碼,遵循這些指示。

  1. 啟動Visual Studio代碼。

  2. 打開文件夾,其中包含您的Python虛擬環境(文件>打開文件夾)。

  3. 在Visual Studio代碼終端(視圖>終端),激活虛擬環境。

  4. 設置當前Python解釋器是一個引用從虛擬環境:

    1. 在命令麵板(視圖>命令麵板),類型Python:選擇翻譯,然後按輸入

    2. 選擇Python解釋器的路徑引用從虛擬環境。

  5. 添加到文件夾Python代碼(. py)文件,其中包含的示例代碼或您自己的代碼。如果您使用您自己的代碼,至少你必須初始化DatabricksSession所示的示例代碼

  6. 運行代碼:

    1. 與Python代碼文件打開,設置任何斷點暫停跑步時,你想讓你的代碼。

    2. 單擊運行和調試欄上的圖標,或點擊視圖>運行在主菜單。

    3. 運行和調試視圖中,單擊運行和調試按鈕。

    4. 按照屏幕上的指示開始運行和調試代碼。

更具體的運行和調試的指導,請參閱配置和運行調試器Python調試和代碼

與Python PyCharm

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

IntelliJ IDEA最終為插件支持PyCharm提供Python。有關詳細信息,請參見Python IntelliJ IDEA最終插件

使用磚聯係PyCharm和Python,遵循這些指令。

  1. PyCharm開始。

  2. 創建一個項目:點擊文件>新建項目

  3. 位置點擊文件夾圖標,然後選擇您的Python虛擬環境之路。

  4. 選擇先前配置的翻譯

  5. 翻譯,單擊省略號。

  6. 點擊係統翻譯

  7. 翻譯,單擊省略號,選擇Python解釋器的完整路徑引用從虛擬環境。然後單擊好吧

  8. 點擊好吧一次。

  9. 點擊創建

  10. 點擊創建從現有來源

  11. 添加到項目中一個Python代碼(. py)文件,其中包含的示例代碼或您自己的代碼。如果您使用您自己的代碼,至少你必須初始化DatabricksSession所示的示例代碼

  12. 與Python代碼文件打開,設置任何斷點暫停跑步時,你想讓你的代碼。

  13. 點擊>跑Run > Debug

  14. 按照屏幕上的指令開始運行或調試代碼。

更具體的運行和調試的指導,請參閱運行沒有任何以前的配置調試

Eclipse與PyDev中

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

使用磚和連接EclipsePyDev中遵循這些指令。

  1. 啟動Eclipse。

  2. 創建一個項目:點擊File > New > > PyDev中> PyDev中項目,然後單擊下一個

  3. 指定一個項目名稱

  4. 項目內容Python的虛擬環境,指定的路徑。

  5. 點擊就像之前請配置一個解釋器

  6. 點擊手動配置

  7. 點擊新的python / pypy exe >瀏覽

  8. 瀏覽並選擇選擇Python解釋器的完整路徑引用於虛擬環境中,然後單擊開放

  9. 選擇翻譯對話框中,單擊好吧

  10. 選擇需要的對話框中,單擊好吧

  11. 首選項對話框中,單擊應用並關閉

  12. PyDev中項目對話框中,單擊完成

  13. 點擊開放的視角

  14. 添加到項目中一個Python代碼(. py)文件,其中包含的示例代碼或您自己的代碼。如果您使用您自己的代碼,至少你必須初始化DatabricksSession所示的示例代碼

  15. 與Python代碼文件打開,設置任何斷點暫停跑步時,你想讓你的代碼。

  16. 點擊>跑Run > Debug

更具體的運行和調試的指導,請參閱運行一個程序

與Python火花殼

請注意

在你開始使用磚連接之前,必須符合要求的設置客戶端磚的連接。

火花殼處理磚個人訪問令牌認證身份驗證。

使用磚與火花殼牌和Python,遵循這些指示。

  1. 開始引發殼連接運行集群,運行以下命令之一從你激活Python虛擬環境:

    如果你設置SPARK_REMOTE環境變量,運行以下命令:

    pyspark

    如果你沒有設置SPARK_REMOTE環境變量,運行以下命令:

    pyspark——遠程sc: / / < workspace-instance-name >: 443 /;令牌= < access-token-value >; x-databricks-cluster-id = < cluster-id >”

    火花殼出現,例如:

    Python 3.10……(叮當聲……]on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
  2. 交互式分析引發殼信息如何使用火花與Python shell集群上運行命令。

    使用內置的火花變量來表示SparkSession在你運行集群,例如:

    > > > df = spark.read.table (samples.nyctaxi.trips) > > > df.show (5) + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + | tpep_pickup_datetime | tpep_dropoff_datetime | trip_distance | fare_amount | pickup_zip | dropoff_zip | + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + | 2016-02-14 16:52:13 | 2016-02-14 17:16:04 | 4.94 | 19.0 | 10282 | 10171 | 2016-02-04 | 18:44:19 | 2016-02-04 18:46:00 | 0.28 | 3.5 | 10110 | 10110 | 2016-02-17 | 17:13:57 | 2016-02-17 17:17:55 | 0.7 | 5.0 | 10103 | 10023 | 2016-02-18 | 10:36:07 | 2016-02-18 10:41:45 | 0.8 | 6.0 | 10022 | 10017 | 2016-02-22 | 14:14:41 | 2016-02-22 14:31:52 | 4.51 | 17.0 | 10110 | 10282 | + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +隻顯示前5行
  3. 停止引發殼,出版社Ctrl+dCtrl+z或運行該命令辭職()退出()

代碼示例

磚提供了一些示例應用程序展示了如何使用磚連接。看到databricks-demos / dbconnect-examples在GitHub庫。

您還可以使用以下簡單的代碼示例和磚連接實驗。這些示例假設您正在使用默認的身份驗證磚的連接。

這個簡單的代碼示例查詢指定的表,然後顯示指定表的前5行。使用不同的表,調整調用spark.read.table

databricks.connect進口DatabricksSession火花=DatabricksSession構建器getOrCreate()df=火花(“samples.nyctaxi.trips”)df顯示(5)

這個長的代碼示例如下:

  1. 創建一個內存DataFrame。

  2. 創建一個表的名稱zzz_demo_temps_table默認的模式。如果這個名字已經存在的表,表中刪除。使用不同的模式或表,調整要求spark.sql,temps.write.saveAsTable,或兩者兼而有之。

  3. 保存DataFrame表的內容。

  4. 運行一個選擇查詢的表的內容。

  5. 顯示查詢的結果。

  6. 刪除表。

databricks.connect進口DatabricksSessionpyspark.sql.types進口*datetime進口日期火花=DatabricksSession構建器getOrCreate()#創建一個火花DataFrame組成的高和低的溫度#機場代碼和日期。模式=StructType([StructField(“AirportCode”,StringType(),),StructField(“日期”,DateType(),),StructField(“TempHighF”,IntegerType(),),StructField(“TempLowF”,IntegerType(),)])數據=((“BLI”,日期(2021年,4,3),52,43),(“BLI”,日期(2021年,4,2),50,38),(“BLI”,日期(2021年,4,1),52,41),(“PDX”,日期(2021年,4,3),64年,45),(“PDX”,日期(2021年,4,2),61年,41),(“PDX”,日期(2021年,4,1),66年,39),(“海”,日期(2021年,4,3),57,43),(“海”,日期(2021年,4,2),54,39),(“海”,日期(2021年,4,1),56,41]]臨時工=火花createDataFrame(數據,模式)#磚集群的創建一個表,然後填滿# DataFrame的表的內容。#從先前的運行,如果表已經存在#刪除它。火花sql(使用默認的)火花sql(“刪除表如果存在zzz_demo_temps_table”)臨時工saveAsTable(“zzz_demo_temps_table”)#查詢磚集群上的表,返回的行#在機場代碼不是BLI和日期晚比2021-04-01 #。組織和秩序的結果高#溫度按照降序排列。df_temps=火花sql(“從zzz_demo_temps_table SELECT *”\“AirportCode ! = BLI和日期>‘2021-04-01’”\“GROUP BY AirportCode,日期、TempHighF TempLowF”\“TempHighF DESC秩序”)df_temps顯示()#結果:## + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +# | AirportCode | |日期TempHighF | TempLowF |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +45 # | PDX | 64 | 2021-04-03 | |# | PDX | 61 | 2021-04-02 | 41 |43 57 #海| | 2021-04-03 | | |54 #海| | 2021-04-02 | | |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +#清理被刪除的表數據磚集群。火花sql(“DROP TABLE zzz_demo_temps_table”)

遷移到最新的磚連接

遵循這些指導方針遷移現有Python代碼項目或編碼環境從磚磚連接運行時12.2 LTS和降低磚磚連接運行時13.0和更高版本。

請注意

磚磚運行時連接13.0和更高版本目前僅支持麵向項目和編碼環境。

  1. 安裝正確版本的Python中列出需求以匹配您的磚集群中,如果不是在本地已經安裝了。

  2. 升級您的Python虛擬環境中使用正確的版本的Python以匹配您的集群中,如果需要的話。說明,請參閱您的虛擬環境提供的文檔。

  3. 與你的虛擬環境激活,卸載PySpark從虛擬環境:

    pip3卸載pyspark
  4. 與您的虛擬環境仍然激活,卸載磚磚運行時的12.2 LTS和較低的連接:

    pip3卸載databricks-connect
  5. 與您的虛擬環境仍然激活,安裝磚磚運行13.0和更高版本的連接:

    pip3安裝,升級“databricks-connect = = 13.1 *”。#或X.Y.*to match your cluster version.

    請注意

    磚建議你添加“dot-asterisk”符號來指定databricks-connect = = X.Y. *而不是databricks-connect = X.Y,確保最新的安裝包。雖然這不是一個要求,它有助於確保您可以使用最新的支持集群功能。

  6. 更新您的Python代碼初始化火花變量(代表一個實例化的DatabricksSession類,類似於SparkSession在PySpark)。代碼示例,請參閱步驟2:配置連接屬性

訪問數據磚公用事業

本節描述如何使用磚連接訪問磚公用事業

你可以叫磚文件係統(DBFS)函數從內部磚工作區。要做到這一點,您使用WorkspaceClient類的dbfs變量。這種方法類似於調用磚公用事業通過dbfs在工作空間變量從一個筆記本。的WorkspaceClient類屬於磚SDK為Python,這是包括在磚磚運行13.0和更高版本的連接。

提示

您還可以使用Python的包括磚SDK的訪問任何可用的磚REST API,不僅DBFS API。看到databricks-sdk在PyPI上。

初始化WorkspaceClient,你必須提供足夠的信息來驗證數據磚SDK Python的工作區。例如,您可以:

  • 硬編碼空間的URL和你訪問令牌直接在您的代碼,然後intializeWorkspaceClient如下。雖然支持這個選項,磚不建議這個選項,因為它可以暴露敏感信息,比如訪問令牌,如果您的代碼簽入到版本控製或者共享:

    w=WorkspaceClient(主機=“https:// < workspace-instance-name >”,令牌=“< access-token-value”)
  • 創建或指定一個配置概要文件包含字段主機令牌,然後intializeWorkspaceClient如下:

    w=WorkspaceClient(配置文件=“<配置文件名稱>”)
  • 設置環境變量DATABRICKS_HOSTDATABRICKS_TOKEN以同樣的方式設置為磚連接,然後初始化WorkspaceClient如下:

    w=WorkspaceClient()

磚SDK Python不承認SPARK_REMOTE環境變量為磚連接。

額外的Python磚磚SDK的身份驗證選項,以及如何初始化AccountClient在Python訪問可用數據磚的磚SDK的REST api在帳戶級別而不是在空間層麵,看到的databricks-sdk在PyPI上。

下麵的示例創建一個文件命名zzz_hello.txt在DBFS根在工作區中,寫數據到文件,關閉文件,從文件中讀取數據,然後刪除該文件。這個例子假定環境變量DATABRICKS_HOSTDATABRICKS_TOKEN已經設置:

databricks.sdk進口WorkspaceClient進口base64w=WorkspaceClient()file_path=“/ zzz_hello.txt”file_data=“你好,磚!”#數據寫入之前必須base64編碼。file_data_base64=base64b64encode(file_data編碼())#創建該文件。$ file_handle=wdbfs創建(路徑=file_path,覆蓋=真正的)處理#添加的base64編碼版本數據。wdbfsadd_block(處理=$ file_handle,數據=file_data_base64解碼())#寫後關閉該文件。wdbfs關閉(處理=$ file_handle)#讀取文件的內容,然後解碼和打印。響應=wdbfs(路徑=file_path)打印(base64b64decode(響應數據)解碼())#刪除該文件。wdbfs刪除(路徑=file_path)

提示

您還可以訪問數據磚實用工具秘密實用程序通過w.secrets,工作實用程序通過w.jobs,圖書館實用程序通過w.libraries

Hadoop設置配置

在客戶端可以設置使用Hadoop的配置spark.conf.setAPI,它適用於SQL和DataFrame操作。Hadoop配置設置sparkContext必須在集群配置中設置或使用一個筆記本。這是因為配置設置sparkContext不與用戶會話,但適用於整個集群。

故障排除

本節描述一些常見的問題,你可能會遇到磚連接以及如何解決它們。

錯誤:StatusCode。StatusCode不可用。未知,DNS解析失敗,或接收http2頭狀態500

問題:當你試圖運行代碼與數據磚連接,你得到一個錯誤消息,其中包含字符串等StatusCode.UNAVAILABLE,StatusCode.UNKNOWN,DNS決議失敗的,或收到了http2狀態:500年

可能的原因:磚連接不能達到您的集群。

推薦解決方案:

  • 檢查以確保您的工作區實例名是正確的。如果你使用環境變量,確保相關的環境變量和正確的本地開發機器上可用。

  • 檢查以確保您的集群ID是正確的。如果你使用環境變量,確保相關的環境變量和正確的本地開發機器上可用。

  • 檢查以確保您的集群具有正確的自定義集群與磚連接兼容的版本。

Python版本不匹配

檢查您使用的Python版本當地至少有相同的小版本版本在集群上(例如,3.10.113.10.10是好的,3.103.9不是)。

如果你有多個Python版本安裝在本地,確保磚使用正確的連接是通過設置PYSPARK_PYTHON環境變量(例如,PYSPARK_PYTHON = python3)。

衝突PySpark安裝

databricks-connect包與PySpark衝突。安裝兩個初始化時將導致錯誤引發上下文在Python中。這可以體現在幾個方麵,包括“流破壞”或“找不到”的錯誤。如果你有PySpark安裝到您的Python環境,確保安裝databricks-connect之前卸載。卸載PySpark之後,一定要完全重新安裝磚連接的包:

pip3卸載pyspark pip3卸載databricks-connect pip3安裝,升級“databricks-connect = = 13.1 *”。#或X.Y.*to match your specific cluster version.

衝突或失蹤路徑二進製文件的條目

可以配置路徑,這樣的命令spark-shell將運行其他之前安裝的二進製代替磚提供的一個連接。你應該確保優先考慮磚連接的二進製文件,或刪除之前安裝的。

如果你不能運行命令spark-shell,也有可能你的路徑並不是自動建立的pip3安裝,你將需要添加安裝手動dir到您的路徑。可以使用磚與ide,即使這不是設置。

文件名、目錄名或卷標在Windows上語法是不正確的

如果您使用的是磚連接在Windows上看:

文件名、目錄名或卷標語法是不正確的。

磚連接被安裝到一個目錄空間在你的路徑。您可以解決通過安裝到一個目錄路徑沒有空間,使用或配置路徑短名稱形式

限製

磚連接不支持以下磚特性和第三方平台。Beplay体育安卓版本

PySpark DataFrame API的限製

  • SparkContext類及其方法是不可用的。

  • 創建DataFrames大於128 MB的本地數據不支持,就會失敗。

  • 彈性分布式數據集不支持(抽樣)和數據集。隻有DataFrames支持。

磚與磚的連接限製

  • 查詢,不支持持續時間超過3600秒,就會失敗。

  • 同步本地開發環境不支持與遠程集群。

  • 確保你使用的Python版本和任何Python包在你的本地開發環境匹配他們的等價物,集群上安裝盡可能幫助確保代碼相容性和有助於減少意外的運行時錯誤。

  • 隻支持Python。不支持R, Scala和Java。

  • 不支持分布式訓練。

  • MLflow支持,但不是模型推理mlflow.pyfunc.spark_udf(火花,…)。你可以在本地加載模型mlflow.pyfunc.load_model(<模型>),或者你可以把它作為一個定製的熊貓UDF。

  • 你不能改變Log4j日誌級別SparkContext

  • 馬賽克不支持。

磚集群的局限性

  • 磚工作區用戶與一個訪問令牌由磚連接必須使用可以連接到權限或更高目標集群。

  • 創建作為選擇SQL命令並不總是工作。相反,使用spark.sql(“選擇……”).write.saveAsTable(“表”)