共用方式為


適用於 Apache Spark 的英文 SDK

注意

本文涵蓋適用於 Apache Spark 的英文 SDK。 Databricks 不支援此適用於 Apache Spark 的英文 SDK。 若要提供意見反應、詢問問題及回報問題,請使用 GitHub 中英文 SDK for Apache Spark 存放庫中的 [問題] 索引卷標。

適用於 Apache Spark 的英文 SDK 會接受英文指示,並將其編譯成 Spark 物件。 其目標是讓Spark更方便使用且易於存取,這可讓您專注於從數據擷取深入解析。

下列資訊包含一個範例,說明如何使用 Azure Databricks Python 筆記本來呼叫適用於 Apache Spark 的英文 SDK。 此範例會使用一般英文問題來引導適用於 Apache Spark 的英文 SDK,從 Azure Databricks 工作區在數據表上執行 SQL 查詢。

要求

  • Databricks 發現 GPT-4 最適合與適用於 Apache Spark 的英文 SDK 搭配運作。 本文使用 GPT-4,並假設您有與 OpenAI 計費方案相關聯的 OpenAI API 密鑰。 若要啟動 OpenAI 計費方案,請在 https://platform.openai.com/account/billing/overview登入,按兩下 [[開始付款方案],然後遵循螢幕上的指示。 啟動 OpenAI 計費方案之後,若要產生 OpenAI API 金鑰,請在 https://platform.openai.com/account/api-keys 登入,然後按兩下 [建立新的秘密金鑰
  • 此範例使用 Azure Databricks Python 筆記本,您可以在連線至 Azure Databricks 叢集的 Azure Databricks 工作區中使用。

步驟 1:安裝適用於 Apache Spark 的英文 SDK 的 Python 套件

在筆記本的第一個數據格中,執行下列程序代碼,其會在附加的計算資源上安裝適用於 Apache Spark 的英文 SDK 最新版 Python 套件:

%pip install pyspark-ai --upgrade

步驟 2:重新啟動 Python 核心以使用更新的套件

在筆記本的第二個儲存格中,執行以下代碼,重新啟動 Python 核心,以使用適用於 Apache Spark 的 English SDK 和其更新的套件相依性所需的更新 Python 套件:

dbutils.library.restartPython()

步驟 3:設定 OpenAI API 金鑰

在筆記本的第三個數據格中,執行下列程式代碼,將名為 OPENAI_API_KEY 的環境變數設定為 OpenAI API 金鑰的值。 適用於 Apache Spark 的英文 SDK 會使用此 OpenAPI 金鑰向 OpenAI 進行驗證。 以 OpenAI API 金鑰的值取代 <your-openai-api-key>

import os

os.environ['OPENAI_API_KEY'] = '<your-openai-api-key>'

重要

在此範例中,為了快速且容易使用,您會將OpenAI API金鑰硬式編碼到筆記本中。 在生產環境中,將 OpenAI API 金鑰硬編碼到筆記本中並不是最佳的安全性做法。 其中一個替代方法是在連結的叢集上設定此環境變數。 請參閱 環境變數。

步驟 4:設定並啟用 LLM

在筆記本的第四個單元格中,執行以下代碼,以設置您希望英語 SDK for Apache Spark 使用的 LLM,然後使用選取的模型啟用適用於 Apache Spark 的英文 SDK。 在此範例中,您會使用 GPT-4。 根據預設,適用於 Apache Spark 的英文 SDK 會尋找名為 OPENAI_API_KEY 的環境變數,並使用其值向 OpenAI 進行驗證,以使用 GPT-4:

from langchain.chat_models import ChatOpenAI
from pyspark_ai import SparkAI

chatOpenAI = ChatOpenAI(model = 'gpt-4')

spark_ai = SparkAI(llm = chatOpenAI)
spark_ai.activate()

提示

若要使用 GPT-4 作為預設 LLM,您可以簡化此程式碼,如下所示:

from pyspark_ai import SparkAI

spark_ai = SparkAI()
spark_ai.activate()

步驟 5:建立源數據框架

在筆記本的第五個數據格中,執行下列程式代碼,從 Azure Databricks 工作區中選取 samples.nyctaxi.trips 數據表中的所有數據,並將此數據儲存在已優化以使用適用於 Apache Spark 的英文 SDK 的數據框架中。 此 DataFrame 是由變數 df在這裡表示:

df = spark_ai._spark.sql("SELECT * FROM samples.nyctaxi.trips")

步驟 6:使用純英文問題查詢 DataFrame

在筆記本的第六個單元格中,執行以下程式碼,要求 Apache Spark 的 SDK 顯示 2016 年 1 月每一天的平均車程距離,精確到最近的十分位數。

df.ai.transform("What was the average trip distance for each day during the month of January 2016? Print the averages to the nearest tenth.").display()

適用於 Apache Spark 的英文 SDK 會列印其分析和最終答案,如下所示:

> Entering new AgentExecutor chain...
Thought: This can be achieved by using the date function to extract the date from the timestamp and then grouping by the date.
Action: query_validation
Action Input: SELECT DATE(tpep_pickup_datetime) as pickup_date, ROUND(AVG(trip_distance), 1) as avg_trip_distance FROM spark_ai_temp_view_2a0572 WHERE MONTH(tpep_pickup_datetime) = 1 AND YEAR(tpep_pickup_datetime) = 2016 GROUP BY pickup_date ORDER BY pickup_date
Observation: OK
Thought:I now know the final answer.
Final Answer: SELECT DATE(tpep_pickup_datetime) as pickup_date, ROUND(AVG(trip_distance), 1) as avg_trip_distance FROM spark_ai_temp_view_2a0572 WHERE MONTH(tpep_pickup_datetime) = 1 AND YEAR(tpep_pickup_datetime) = 2016 GROUP BY pickup_date ORDER BY pickup_date

> Finished chain.

適用於 Apache Spark 的英文 SDK 會執行其最終答案,並列印結果,如下所示:

+-----------+-----------------+
|pickup_date|avg_trip_distance|
+-----------+-----------------+
| 2016-01-01|              3.1|
| 2016-01-02|              3.0|
| 2016-01-03|              3.2|
| 2016-01-04|              3.0|
| 2016-01-05|              2.6|
| 2016-01-06|              2.6|
| 2016-01-07|              3.0|
| 2016-01-08|              2.9|
| 2016-01-09|              2.8|
| 2016-01-10|              3.0|
| 2016-01-11|              2.8|
| 2016-01-12|              2.9|
| 2016-01-13|              2.7|
| 2016-01-14|              3.3|
| 2016-01-15|              3.0|
| 2016-01-16|              3.0|
| 2016-01-17|              2.7|
| 2016-01-18|              2.9|
| 2016-01-19|              3.1|
| 2016-01-20|              2.8|
+-----------+-----------------+
only showing top 20 rows

後續步驟

  • 請嘗試建立 DataFrame,此範例中由變數 df以不同的數據表示。
  • 請嘗試針對 df.ai.transform 函式使用不同的純英文問題。
  • 請嘗試使用不同的 GPT-4 模型。 請參閱 GPT-4
  • 探索其他程式代碼範例。 請參閱下列其他資源。

其他資源