Английский пакет SDK для Apache Spark
Заметка
В этой статье описывается английский пакет SDK для Apache Spark. Этот SDK на английском языке для Apache Spark не поддерживается напрямую компанией Databricks. Чтобы предоставить отзывы, задать вопросы и сообщить о проблемах, используйте раздел Issues в репозитории English SDK для Apache Spark на GitHub.
Пакет SDK на английском языке для Apache Spark принимает инструкции на английском языке и компилирует их в объекты Spark. Его цель — сделать Spark более понятным и доступным, что позволяет сосредоточить усилия на извлечении аналитических сведений из данных.
Следующие сведения содержат пример, в котором описано, как использовать записную книжку Azure Databricks Python для вызова английского пакета SDK для Apache Spark. В этом примере используется простой вопрос на английском языке, чтобы направить английский SDK для Apache Spark для выполнения SQL-запроса на table в вашей рабочей области Azure Databricks.
Требования
- Databricks обнаружил, что GPT-4 работает оптимально с английским пакетом SDK для Apache Spark. В этой статье используется GPT-4 и предполагается, что у вас есть ключ API OpenAI, связанный с планом выставления счетов OpenAI. Чтобы запустить план выставления счетов OpenAI, войдите в https://platform.openai.com/account/billing/overview, щелкните Запустить план оплатыи следуйте инструкциям на экране. После запуска плана выставления счетов OpenAI, чтобы generate ключ API OpenAI, войдите https://platform.openai.com/account/api-keys и щелкните Создать новый секретный ключ.
- В этом примере используется записная книжка Python Azure Databricks, которую можно использовать в рабочей области Azure Databricks, подключенной к кластеру Azure Databricks.
Шаг 1. Установка пакета Python для английского пакета SDK для Apache Spark
В первой ячейке записной книжки выполните следующий код, который устанавливает на присоединенном вычислительном ресурсе последнюю версию пакета Python для английского пакета SDK для Apache Spark:
%pip install pyspark-ai --upgrade
Шаг 2. Перезапустите ядро Python для использования обновленного пакета
Во второй ячейке записной книжки запустите следующий код, который перезапускает ядро Python для использования обновленного пакета Python для английского пакета SDK для Apache Spark и его обновленных зависимостей пакета:
dbutils.library.restartPython()
Шаг 3: Set ваш ключ API OpenAI
В третьей ячейке записной книжки запустите следующий код, который задает переменную среды с именем OPENAI_API_KEY
значение ключа API OpenAI. Английский пакет SDK для Apache Spark использует этот ключ OpenAPI для проверки подлинности с помощью OpenAI. Замените <your-openai-api-key>
значением ключа API OpenAI:
import os
os.environ['OPENAI_API_KEY'] = '<your-openai-api-key>'
Важный
В этом примере для быстрого и удобного использования вы жестко закодируйте ключ API OpenAI в записную книжку. В рабочих сценариях рекомендуется не жестко кодировать ключ API OpenAI в записных книжках. Одним из вариантов является set эту переменную среды в подключенном кластере. См. переменные среды.
Шаг 4. Set и активировать LLM
В четвертой ячейке записной книжки выполните следующий код, который задает LLM, используемую в английском пакете SDK для Apache Spark, а затем активирует использование английского пакета SDK для Apache Spark с выбранной моделью. В этом примере используется GPT-4. По умолчанию английский пакет SDK для Apache Spark ищет переменную среды с именем 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. Создание исходного кадра данных
В пятой ячейке записной книжки выполните следующий код, который выбирает все данные в samples.nyctaxi.trips
table из рабочей области Azure Databricks и сохраняет эти данные в кадре данных, оптимизированном для работы с английским пакетом SDK для Apache Spark. Этот кадр данных представлен здесь переменной df
:
df = spark_ai._spark.sql("SELECT * FROM samples.nyctaxi.trips")
Шаг 6. Запросите данные из кадра данных с помощью обычного английского запроса
В шестой ячейке блокнота выполните следующий код, который запрашивает SDK для Apache Spark на английском языке напечатать среднее расстояние поездки с округлением до ближайшей десятой доли километра за каждый день января 2016 года.
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()
Английский пакет SDK для Apache Spark выводит свой анализ и окончательный ответ следующим образом:
> 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.
Английский пакет SDK для Apache Spark запускает свой окончательный ответ и выводит результаты следующим образом:
+-----------+-----------------+
|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
, с различными данными. - Попробуйте использовать различные простые вопросы на английском языке для функции
df.ai.transform
. - Попробуйте использовать разные модели GPT-4. См. GPT-4.
- Ознакомьтесь с дополнительными примерами кода. Дополнительные ресурсы см. в следующих статьях.
Дополнительные ресурсы
- Репозиторий Apache Spark английского SDK на GitHub
- Веб-сайт документации по английскому пакету SDK для Apache Spark
- Запись блога Введение английского языка в качестве нового языка программирования для Apache Spark
- Объявление и демонстрация английского SDK для Apache Spark во время основного доклада на конференции Data + AI Summit в 2023 году.
- SDK на английском языке для Apache Spark на сессии Data + AI Summit 2023