開始
加載和管理數據
處理數據
政府
引用和資源
2023年8月3日更新
給我們反饋
你可以通過ODBC連接從你本地Python代碼在磚集群數據。要做到這一點,您可以使用開源的Python代碼模塊pyodbc。
pyodbc
按照下列指示來安裝、配置和使用pyodbc。
更多信息pyodbc,請參閱pyodbc維基。
請注意
磚了Python的磚SQL的連接器作為一個替代pyodbc。Python的磚SQL的連接器是容易設置和使用,並有一組更健壯的編碼結構,比pyodbc。然而pyodbc獲取查詢結果的時候可能有更好的性能高於10 MB。
當地開發機器運行下列之一:
macOS
窗戶
一個支持Unix或Linux發行版rpm程序或. deb文件
rpm程序
. deb
皮普。
對於Unix, Linux或macOS家釀。
一個磚集群。有關更多信息,請參見創建一個集群。
按照說明Unix, Linux或macOS或窗戶。
如果你當地的Python代碼運行在Unix、Linux、或macOS機器,遵循這些指令。
在這個步驟中,你下載並安裝磚ODBC驅動程序unixodbc包,pyodbc模塊。(pyodbc模塊需要unixodbc包在Unix、Linux和macOS)。
unixodbc
下載磚ODBC驅動程序。
安裝磚ODBC驅動程序,打開SimbaSparkODBC.zip你下載的文件。
SimbaSparkODBC.zip
做下列之一:
macOS:雙擊提取辛巴Spark.dmg文件。然後雙擊SimbaSparkODBC.pkg文件顯示,遵循任何屏幕方向。
辛巴Spark.dmg
SimbaSparkODBC.pkg
Linux:使用發行版的包管理器實用工具安裝提取simbaspark.rpm或simbaspark.deb文件,並遵守任何屏幕方向。
simbaspark.rpm
simbaspark.deb
安裝unixodbc方案:從終端,運行釀造安裝unixodbc。有關更多信息,請參見unixodbc家釀的網站。
釀造安裝unixodbc
安裝pyodbc模塊:從終端,運行皮普安裝pyodbc。有關更多信息,請參見pyodbc在PyPI網站安裝pyodbc Wiki。
皮普安裝pyodbc
指定集群磚的連接細節pyodbc使用。
安全最佳實踐,當您使用自動化工具進行身份驗證,係統中,腳本和應用程序,磚屬於建議您使用個人訪問令牌服務主體而不是用戶工作區。為服務主體,創建令牌服務主體的管理令牌。
將以下內容添加到/etc/odbc.ini文件在您的機器上:
/etc/odbc.ini
提示
如果你不想或不能使用/etc/odbc.ini文件在您的機器上,您可以指定在Python代碼直接連接細節。要做到這一點,跳過這一步,繼續休息步驟3:測試你的配置。
(ODBC數據源)Databricks_Cluster=辛巴火花ODBC驅動程序(Databricks_Cluster)司機=<驅動器路徑>描述=辛巴火花DSN ODBC驅動程序主機=<服務器主機>港口=443年模式=默認的SparkServerType=3AuthMech=3UID=令牌鬆材線蟲病=< personal-access-token >ThriftTransport=2SSL=1HTTPPath=< http-path >
在前麵的配置文件,替換占位符後,然後保存文件:
取代<驅動器路徑>與下列之一:
<驅動器路徑>
macOS:/圖書館/辛巴/ / lib / libsparkodbc_sbu.dylib火花
/圖書館/辛巴/ / lib / libsparkodbc_sbu.dylib火花
Linux 64位:/ opt /辛巴/ / lib / 64 / libsparkodbc_sb64.so火花
/ opt /辛巴/ / lib / 64 / libsparkodbc_sb64.so火花
Linux 32位:/ opt /辛巴/ / lib / 32 / libsparkodbc_sb32.so火花
/ opt /辛巴/ / lib / 32 / libsparkodbc_sb32.so火花
取代<服務器主機>與服務器主機名價值的高級選項,JDBC / ODBC選項卡為您的集群。
<服務器主機>
取代< personal-access-token >與你的價值個人訪問令牌為你的磚工作區。
< personal-access-token >
取代< http-path >與HTTP路徑價值的高級選項,JDBC / ODBC選項卡為您的集群。
< http-path >
允許pyodbc連接到不同的集群,將一個條目添加到(ODBC數據來源)下麵的部分和一個匹配的條目(Databricks_Cluster)與特定的連接細節。每個條目必須有一個唯一的名稱在這個文件中。
(ODBC數據來源)
(Databricks_Cluster)
添加之前的信息添加到/etc/odbc.ini文件到相應的/usr/local/etc/odbc.ini文件在您的機器上。
/usr/local/etc/odbc.ini
將以下內容添加到/etc/odbcinst.ini文件在您的機器上:
/etc/odbcinst.ini
(ODBC驅動程序)辛巴SQL Server ODBC驅動程序=安裝(辛巴火花ODBC驅動程序)司機=<驅動器路徑>
在前麵的內容中,替換<驅動器路徑>用下列值之一,然後保存文件:
你剛才添加的信息添加到/etc/odbcinst.ini文件到相應的/usr/local/etc/odbcinst.ini文件在您的機器上。
/usr/local/etc/odbcinst.ini
添加以下信息結束的時候simba.sparkodbc.ini文件在您的機器上,然後保存文件。macOS,這個文件/圖書館/辛巴/火花/ lib。
simba.sparkodbc.ini
/圖書館/辛巴/火花/ lib
DriverManagerEncoding=UTF- - - - - -16ODBCInstLib= /usr/當地的/地窖/unixodbc/2.3.9/自由/libodbcinst。dylib
在這個步驟中,您編寫和運行Python代碼使用磚集群來查詢數據庫表並顯示查詢結果的前兩行。
查詢通過使用一個集群:
創建一個文件命名pyodbc-test-cluster.py用下麵的內容。取代<表名稱>查詢數據庫表的名稱,保存文件,然後運行該文件與您的Python解釋器。
pyodbc-test-cluster.py
<表名稱>
進口pyodbc# <表名稱>替換為數據庫表的名稱來查詢。table_name=“<表名稱>”#連接到集群使用磚#您在前麵創建的數據源名稱(DSN)。康涅狄格州=pyodbc。連接(“DSN = Databricks_Cluster”,自動提交=真正的)#運行一個SQL查詢使用前麵的連接。光標=康涅狄格州。光標()光標。執行(f“SELECT *{table_name}限製2”)#打印行從查詢檢索。打印(f“查詢輸出:SELECT *{table_name}限製2\ n”)為行在光標。fetchall():打印(行)
如果你跳過步驟2:配置軟件,沒有使用一個/etc/odbc.ini文件,然後在調用指定連接細節pyodbc.connect,例如:
pyodbc.connect
康涅狄格州=pyodbc。連接(“司機= <驅動器路徑>;”+“主機= <服務器主機>;”+“端口= 443;”+“模式=違約;”+“SparkServerType = 3;”+“AuthMech = 3;”+“UID =令牌;”+“PWD = < personal-access-token >;”+“ThriftTransport = 2;+“SSL = 1;”+“HTTPPath = < http-path >”,自動提交=真正的)
替換占位符的值作為描述步驟2:配置軟件。
加快運行代碼,啟動集群相對應的HTTPPath設置在你的odbc.ini文件。
HTTPPath
odbc.ini
運行pyodbc-test-cluster.py文件與您的Python解釋器。的前兩行顯示數據庫表。
Python測試代碼運行在不同的集群中,更改設置在前麵兩個odbc.ini文件。或者添加一個新條目(ODBC數據來源)部分,連同匹配的連接細節,兩個odbc.ini文件。然後在測試代碼更改DSN名稱匹配相關的名稱(ODBC數據來源)。
運行Python測試代碼與一個不同的數據庫表,更改table_name價值。
table_name
運行Python測試代碼與一個不同的SQL查詢,更改執行命令字符串。
執行
如果您的本地Python代碼運行在Windows機器上,遵循這些指示。
雙擊提取辛巴Spark.msi文件,並遵守任何屏幕方向。
辛巴Spark.msi
安裝pyodbc模塊:從一個行政命令提示符運行皮普安裝pyodbc。有關更多信息,請參見pyodbc在PyPI網站安裝pyodbc Wiki。
為一個集群:指定連接細節
添加一個數據源名稱(DSN)包含關於您的集群信息:開始的ODBC數據源應用程序:開始菜單,開始打字ODBC,然後單擊ODBC數據源。
ODBC
在用戶DSN選項卡上,單擊添加。在創建新數據源對話框中,單擊辛巴火花ODBC驅動程序,然後單擊完成。
在辛巴火花ODBC Driver DSN設置對話框,改變以下值:
數據源名稱:Databricks_Cluster
Databricks_Cluster
描述:我的集群
我的集群
火花服務器類型:SparkThriftServer(火花1.1和後)
SparkThriftServer(火花1.1和後)
主機(年代):服務器主機名價值的高級選項,JDBC / ODBC選項卡為您的集群。
港口:443年
443年
數據庫:默認的
默認的
機製:用戶的名字和密碼
用戶的名字和密碼
用戶名:令牌
令牌
密碼:你的價值個人訪問令牌為你的磚工作區。
節約運輸:HTTP
HTTP
點擊HTTP選項。在HTTP屬性對話框,HTTP路徑,輸入HTTP路徑價值的高級選項,JDBC / ODBC為您的集群選項卡,然後單擊好吧。
點擊SSL選項。在SSL選項對話框,檢查啟用SSL框,然後單擊好吧。
點擊測試。如果測試成功,單擊好吧。
允許pyodbc開關連接到不同的集群,重複這個過程與特定的連接細節。每個DSN必須有一個惟一名稱。
創建一個文件命名pyodbc-test-cluster.py用下麵的內容。取代<表名稱>查詢數據庫表的名稱,然後保存文件。
加快運行代碼,啟動集群相對應的主機(年代)的價值辛巴火花ODBC Driver DSN設置磚集群的對話框。
Python測試代碼運行在不同的集群中,改變主機(年代)的價值辛巴火花ODBC Driver DSN設置磚集群的對話框。或創建一個新的DSN。然後在測試代碼更改DSN名稱匹配相關的數據源名稱。
當使用這一節將介紹一些常見的問題pyodbc磚。
問題:你收到一個錯誤消息類似如下:
<類的pyodbc。錯誤”>返回一組結果錯誤回溯(最近的電話最後):文件“/用戶/用戶/ .pyenv /版本/ 3.7.5 / lib / python3.7 /編碼/ utf_16_le。py”,行16日在解碼返回編解碼器。utf_16_le_decode(輸入錯誤,正確)UnicodeDecodeError: utf-16-le的編解碼器不能解碼字節位置2112 - 2113:非法utf - 16代理
導致:存在一個問題pyodbc版本4.0.31或低於運行查詢,返回時可以與這些症狀清單列長名稱或錯誤消息。這個問題已經固定的一個新版本pyodbc。
解決方案:升級你的安裝pyodbc4.0.32版或以上。
看到問題在mkleehammer / pyodbc在GitHub庫。