適用於 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。
- 探索其他程式代碼範例。 請參閱下列其他資源。
其他資源
- GitHub 中適用於 Apache Spark 存放庫的 英文 SDK
- 適用於 Apache Spark 的 英文 SDK 文件網站
- 部落格文章 把英文引入為 Apache Spark 的新程式設計語言
- 2023 年 Data + AI 峰會 的主題演講中,公布並示範了適用於 Apache Spark 的英文 SDK
- 在 Data + AI Summit 2023 期間,Apache Spark 英文 SDK 會話