다음을 통해 공유


Apache Spark용 영어 SDK

메모

이 문서에서는 Apache Spark용 영어 SDK에 대해 설명합니다. 이 영어 SDK for Apache Spark는 Databricks에서 직접 지원되지 않습니다. 피드백을 제공하고, 질문하고, 문제를 보고하려면 GitHub의 영어 SDK for Apache Spark 리포지토리에 있는 문제 탭을 사용합니다.

Apache Spark용 영어 SDK는 영어 지침을 사용하여 Spark 개체로 컴파일합니다. 목표는 Spark를 보다 사용자 친화적이고 접근성 있게 만드는 것이며, 이를 통해 데이터에서 인사이트를 추출하는 데 집중할 수 있습니다.

다음 정보에는 Azure Databricks Python Notebook을 사용하여 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 Notebook을 사용합니다.

1단계: Apache Spark용 영어 SDK용 Python 패키지 설치

Notebook의 첫 번째 셀에서 다음 코드를 실행합니다. 이 코드는 연결된 컴퓨팅 리소스에 Apache Spark용 영어 SDK용 Python 패키지의 최신 버전을 설치합니다.

%pip install pyspark-ai --upgrade

2단계: 업데이트된 패키지를 사용하도록 Python 커널 다시 시작

Notebook의 두 번째 셀에서 다음 코드를 실행합니다. 이 코드는 Python 커널을 다시 시작하여 Apache Spark용 영어 SDK 및 업데이트된 패키지 종속성에 대해 업데이트된 Python 패키지를 사용합니다.

dbutils.library.restartPython()

3단계: OpenAI API 키 설정

Notebook의 세 번째 셀에서 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 키를 Notebook에 하드 코딩합니다. 프로덕션 시나리오에서는 OpenAI API 키를 Notebook에 하드 코딩하지 않는 것이 보안 모범 사례입니다. 한 가지 다른 방법은 연결된 클러스터에서 이 환경 변수를 설정하는 것입니다. 환경 변수참조하세요.

4단계: LLM 설정 및 활성화

Notebook의 네 번째 셀에서 다음 코드를 실행합니다. 이 코드는 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단계: 원본 데이터 프레임 만들기

Notebook의 다섯 번째 셀에서 다음 코드를 실행합니다. 이 코드는 Azure Databricks 작업 영역에서 samples.nyctaxi.trips 테이블의 모든 데이터를 선택하고 이 데이터를 Apache Spark용 영어 SDK를 사용하도록 최적화된 DataFrame에 저장합니다. 이 DataFrame은 변수 df로 표시됩니다.

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

6단계: 일반 영어 질문을 사용하여 DataFrame 쿼리

Notebook의 여섯 번째 셀에서 다음 코드를 실행합니다. 이 코드는 Apache Spark에 대한 영어 SDK에 2016년 1월 동안 매일 평균 이동 거리를 가장 가까운 10분의 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참조하세요.
  • 추가 코드 예제를 살펴봅니다. 다음 추가 리소스를 참조하세요.

추가 리소스

  • GitHub의 Apache Spark 리포지토리에 대한 영어 SDK
  • Apache Spark용 영어 SDK 설명서 웹 사이트
  • Apache Spark의 새로운 프로그래밍 언어로 영어를 소개하는 블로그 게시물 .
  • 2023년 Data + AI Summit 기조연설에서 Apache Spark용 영어로 된 SDK 발표 및 데모
  • Data + AI Summit 2023 동안 Apache Spark 세션에 대한 영어 SDK