如何從Python腳本運行SQL查詢

學習如何使用Python腳本運行SQL查詢。

寫的arjun.kaimaparambilrajan

最後發布時間:2022年5月19日

您可能希望訪問Databricks筆記本之外的表。除了通過JDBC連接BI工具外(AWS|Azure),您也可以通過使用Python腳本訪問表。您可以使用JDBC連接到Spark集群PyHive然後運行一個腳本。您應該在運行Python腳本的機器上安裝PyHive。

刪除

信息

Python 2被認為是臨終.您應該使用Python 3來運行本文提供的腳本。如果您的係統上同時運行Python 2和Python 3,那麼在繼續之前,應該確保您的pip版本鏈接到Python 3。

您可以通過運行來檢查您的pip版本pip - v在命令提示符處。該命令返回pip的版本及其使用的Python版本。

安裝PyHive和Thrift

使用pip安裝PyHive和Thrift。

%sh PIP安裝pyhive thrift

運行SQL腳本

這個示例Python腳本發送SQL查詢顯示表到您的集群,然後顯示查詢的結果。

在運行腳本之前,請執行以下操作:

  1. 取代<標記>使用你的Databricks API令牌。
  2. 取代< databricks-instance >使用您的Databricks部署的域名。
  3. 取代< workspace-id >使用工作區ID。
  4. 取代< cluster-id >使用集群ID。

要獲取API令牌,請參見生成令牌(AWS|Azure).要確定其他值,請參閱如何獲取工作區、集群、筆記本和作業詳細信息(AWS|Azure).

python % # !/usr/bin/python import OS import sys from pyhive import hive from thrift。transport import THttpClient import base64 TOKEN = "< TOKEN >" WORKSPACE_URL = "" WORKSPACE_ID = "" CLUSTER_ID = "" conn = 'https://%s/sql/protocolv1/o/%s/%s' % (WORKSPACE_URL, WORKSPACE_ID, CLUSTER_ID) print(conn) transport = THttpClient.THttpClient(conn) auth = " TOKEN:%s" % TOKEN PY_MAJOR = sys. name "< database -instance>" WORKSPACE_ID = ""如果PY_MAJOR < 3: auth = base64.standard_b64encode(auth) else: auth = base64.standard_b64encode(auth.encode()).decode()傳輸。setCustomHeaders({"Authorization": "Basic %s" % auth}) cursor = hive.connect(thrift_transport=transport).cursor()遊標。execute('show tables',async_=True) pending_states = (hive.ttypes.TOperationState)。INITIALIZED_STATE hive.ttypes.TOperationState。PENDING_STATE, hive.ttypes.TOperationState.RUNNING_STATE)。pending_states中的operationState:打印("Pending…")打印("Done. "fetchall():打印(表)