適用于 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 的英文 SDK 及其更新的套件相依性使用更新的 Python 套件:
dbutils.library.restartPython()
步驟 3:設定 OpenAI API 金鑰
在筆記本的第三個數據格中,執行下列程式碼,將名為 OPENAI_API_KEY
的環境變數設定為 OpenAI API 金鑰的值。 適用于 Apache Spark 的英文 SDK 會使用此 OpenAPI 金鑰向 OpenAI 進行驗證。 將 取代 <your-openai-api-key>
為 OpenAI API 金鑰的值:
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
資料,並將此資料儲存在 DataFrame 中,該資料已優化以使用適用于 Apache Spark 的英文 SDK。 此 DataFrame 是由 變數 df
在這裡表示:
df = spark_ai._spark.sql("SELECT * FROM samples.nyctaxi.trips")
步驟 6:使用純英文問題查詢 DataFrame
在筆記本的第六個數據格中,執行下列程式碼,要求英文 SDK for Apache Spark 列印平均車程距離,到 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 中的英文 SDK for Apache Spark 存放庫
- 適用于 Apache Spark 的 英文 SDK 檔網站
- 部落格文章 簡介英文作為 Apache Spark 的新程式設計語言
- 2023 年 Data + AI 峰會主題 演講期間,適用于 Apache Spark 的 英文 SDK 公告和示範
- Data + AI Summit 2023 期間的英文 SDK for Apache Spark 會話