Английский пакет SDK для Apache Spark
Примечание.
В этой статье описывается английский пакет SDK для Apache Spark. Этот английский пакет SDK для Apache Spark не поддерживается напрямую Databricks. Чтобы предоставить отзывы, задать вопросы и сообщить о проблемах, используйте вкладку "Проблемы " в английском пакете SDK для репозитория Apache Spark в GitHub.
Пакет SDK на английском языке для Apache Spark принимает инструкции на английском языке и компилирует их в объекты Spark. Его цель — сделать Spark более понятным и доступным, что позволяет сосредоточить усилия на извлечении аналитических сведений из данных.
Следующие сведения содержат пример, в котором описано, как использовать записную книжку Azure Databricks Python для вызова английского пакета SDK для Apache Spark. В этом примере используется обычный английский вопрос, который поможет использовать английский пакет SDK для Apache Spark для выполнения SQL-запроса в таблице из рабочей области Azure Databricks.
Requirements
- Databricks обнаружил, что GPT-4 работает оптимально с английским пакетом SDK для Apache Spark. В этой статье используется GPT-4 и предполагается, что у вас есть ключ API OpenAI, связанный с планом выставления счетов OpenAI. Чтобы запустить план выставления счетов OpenAI, войдите в https://platform.openai.com/account/billing/overviewсистему, нажмите кнопку "Пуск плана оплаты" и следуйте инструкциям на экране. После запуска плана выставления счетов OpenAI для создания ключа 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. Настройка ключа 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 в записных книжках. Один из альтернативных подходов — задать эту переменную среды в подключенном кластере. См. раздел Переменные среды.
Шаг 4. Установка и активация 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
рабочей области 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.
- Ознакомьтесь с дополнительными примерами кода. Дополнительные ресурсы см. в следующих статьях.
Дополнительные ресурсы
- Английский пакет SDK для репозитория Apache Spark в GitHub
- Веб-сайт документации apache Spark на английском языке
- Запись блога о вводе английского языка в качестве нового языка программирования для Apache Spark
- Объявление и демонстрация английского пакета SDK для Apache Spark во время ключевого выступления на саммите ИИ с 2023 г.
- Английский пакет SDK для сеанса Apache Spark во время сеанса Data + AI Summit 2023