共用方式為

适用于 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 群集的 Azure Databricks 工作区中使用的 Azure Databricks Python 笔记本。

步骤 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

在笔记本的第四个单元中,运行以下代码,该代码设置您希望用于 Apache Spark 的英文 SDK 所使用的 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。 此数据帧由变量 df在此处表示:

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

步骤 6:使用纯英语问题查询数据帧

在笔记本的第六个单元格中运行以下代码,这段代码要求 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

后续步骤

  • 尝试创建由变量 df表示的 DataFrame,其中包含不同的数据。
  • 尝试对 df.ai.transform 函数使用不同的普通英语问题。
  • 请尝试使用不同的 GPT-4 模型。 请参阅 GPT-4
  • 浏览其他代码示例。 请参阅以下其他资源。

其他资源