メインコンテンツまでスキップ

Apache Spark の英語版 SDK

注記

この記事では、Apache Spark の英語版 SDK について説明します。 この Apache Spark 用の英語版 SDK は、Databricks で直接サポートされていません。 フィードバックの提供、質問、問題の報告を行うには、GitHub の Apache Spark リポジトリの英語版 SDK の [ 問題 ] タブを使用します。

Apache Spark の英語版 SDK は、英語の命令を受け取り、それらを Spark オブジェクトにコンパイルします。 その目標は、 Spark をよりユーザーフレンドリーでアクセスしやすくすることで、データから知見を抽出することに力を注ぐことです。

次の情報には、Databricks Python ノートブックを使用して Apache Spark の英語 SDK を呼び出す方法を説明する例が含まれています。 この例では、プレーンな英語の質問を使用して、Apache Spark の英語 SDK が 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 でサインインします をクリックし、[ 新しいシークレットキーを作成 ] をクリックします。
  • この例では、DatabricksPython DatabricksDatabricksクラスターに接続されている ワークスペースで使用できる ノートブックを使用します。

ステップ 1: Apache Spark の英語版 SDK の Python パッケージをインストールする

ノートブックの最初のセルで、次のコードを実行します。これにより、アタッチされたコンピュート リソースに、英語のPython 1SDK for の の最新バージョンの パッケージがインストールされます。Apache Spark

%pip install pyspark-ai --upgrade

ステップ2:Pythonカーネルを再起動して、更新されたパッケージを使用する

ノートブックの 2 番目のセルで次のコードを実行すると、Python カーネルが再起動され、Apache Spark の英語版 SDK の更新された Python パッケージとその更新されたパッケージの依存関係が使用されます。

Python
dbutils.library.restartPython()

ステップ 3: OpenAI API キーを設定する

ノートブックの 3 番目のセルで、次のコードを実行します。これにより、 OPENAI_API_KEY という名前の環境変数が OpenAI API キーの値に設定されます。 Apache Spark の英語版 SDK では、この OpenAPI キーを使用して OpenAI で認証します。 <your-openai-api-key> を OpenAI API キーの値に置き換えます。

Python
import os

os.environ['OPENAI_API_KEY'] = '<your-openai-api-key>'
important

この例では、速度と使いやすさのために、OpenAI API キーをノートブックにハードコードします。 本番運用のシナリオでは、OpenAI API キーをノートブックにハードコードしないことがセキュリティのベストプラクティスです。 別の方法の 1 つは、アタッチされたクラスターにこの環境変数を設定することです。 環境変数を参照してください。

ステップ 4: LLM を設定してアクティブ化する

ノートブックの 4 番目のセルで、次のコードを実行して、Apache Spark の英語版 SDK で使用する LLM を設定し、選択したモデルで Apache Spark の英語版 SDK をアクティブ化します。 この例では、GPT-4 を使用します。 デフォルトでは、Apache Spark の英語版 SDK は OPENAI_API_KEY という名前の環境変数を検索し、その値を使用して GPT-4 を使用する OpenAI で認証します。

Python
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 として使用するには、このコードを次のように簡略化できます。

Python
from pyspark_ai import SparkAI

spark_ai = SparkAI()
spark_ai.activate()

手順 5: ソース データフレーム を作成する

ノートブックの 5 番目のセルで、次のコードを実行します。これにより、Databricks ワークスペースから samples.nyctaxi.trips テーブル内のすべてのデータが選択され、このデータが Apache Spark の英語 SDK で動作するように最適化された データフレーム に格納されます。 この データフレーム は、ここでは変数 dfで表されます。

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

ステップ 6: 平易な英語の質問を使用して データフレーム をクエリする

ノートブックの 6 番目のセルで、次のコードを実行します。このコードは、2016 年 1 月の各日の平均移動距離を 10 分の 1 に最も近い値まで出力するように Apache Spark の英語 SDK に要求します。

Python
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で表される データフレーム を、異なるデータで作成してみてください。
  • df.ai.transform機能には、さまざまな平易な英語の質問を使用してみてください。
  • 別のGPT-4モデルを使ってみてください。 GPT-4を参照してください。
  • その他のコード例をご覧ください。 次の追加リソースを参照してください。

追加のリソース