Apache Sparkの新たなプログラミング言語としての英語のご紹介

[Introducing English as the New Programming Language for Apache Spark \| Databricks Blog](https://www.databricks.com/blog/introducing-english-new-programming-language-apache-spark)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# イントロダクション

皆様のSpark体験をより豊かなものにするために設計された変革的なツールである、Apache Spark向けEnglish SDKを公開することを嬉しく思っています。208の国や地域から年間10億以上のダウンロードによって世界中から祝福されているApache Spark™は、大規模データ分析を劇的に前進させました。生成AIの革新的なアプリケーションによって、我々のEnglish SDKは、Sparkをよりユーザーフレンドリーにし、これまで以上にアプローチできるようにすることで、この力強いコミュニティを拡張しようとしています！

# モチベーション

GitHub Copilotは、AIアシストによるコード開発の領域に革命をもたらしました。それはパワフルなものですが、ユーザはコミットされる生成されたコードを理解することが求められます。レビュアーは、レビューするためにはコードも理解しなくてはなりません。これは、幅広な導入における制限要素となり得ます。また、時にはコンテキストに苦慮し、Sparkテーブルやデータフレームを取り扱う際にそれが顕著なものとなります。添付のGIFはこの点を説明しており、Copilotはウィンドウ指定と存在しない`dept_id`の参照を提案しており、理解するにはある種の専門性を必要とします。
![](https://cms.databricks.com/sites/default/files/inline-images/image1_0.gif)

AIを副操縦士のように扱うのではなく、AIをお抱え運転手にして我々は豪華な後部座席に座りませんか？ここでEnglish SDKの登場です。我々は、最先端の大規模言語モデルは、APIドキュメント、オープンソースプロジェクト、Q&A、チュートリアル、書籍などのような膨大なオープンで高品質なコンテンツに過去十年間貢献した偉大なSparkコミュニティのおかげもあって、Sparkをよく知っていることに気づきました。そこで、我々は生成AIのSparkに関する専門知識をEnglish SDKに焼き上げました。複雑な生成コードを理解する必要なしに、多くの人が理解できる英語でのシンプルな指示で結果を得ることができます。

```py
transformed_df = df.ai.transform('get 4 week moving average sales by dept')
```

Sparkテーブルとデータフレームを理解しているEnglish SDKは、複雑性に対応し、直接そして正確にデータフレームを返却します！

これらの英語の指示をPySparkやSQLのコードに変換する生成AIを用いて、英語をプログラミング言語として活用するというビジョンで我々のジャーニーはスタートしました。この革新的なアプローチは、プログラミングに対する障壁を引き下げ、学習曲線をシンプルにするために設計されています。このビジョンはEnglish SDKの背後にある駆動力となっており、我々のゴールは、Sparkのリーチを拡大し、非常に成功しているプロジェクトをさらに成功するものにすることです。
![](https://cms.databricks.com/sites/default/files/inline-images/image3_1.png)

# English SDKの機能

English SDKは以下のキー機能を提供することで、Spark開発プロセスをシンプルにします。

- **データ取り込み:** このSDKは指定された説明を用いてweb検索を行い、最も適切な結果を特定するためにLLMを活用し、この選択されたwebデータをスムースに取り込みます。すべては一つのステップで達成されます。
- **データフレームオペレーション:** このSDKは、あなたの英語の説明に基づいて変換処理、プロット、説明を可能位する特定のデータフレームに対する機能を提供します。これらの機能は、あなたのコードの可読性と効率を劇的に改善し、データフレームに対するオペレーションをわかりやすく直感的なものにします。
- **ユーザー定義関数(UDF):** このSDKはUDF作成の円滑なプロセスをサポートしています。シンプルなデコレーターによって、docstringを指定するだけでよく、AIがコードコンプリーションを行います。この機能は、UDF作成プロセスをシンプルにし、あなたは関数定義にフォーカスすることができ、残りはAIが面倒を見ます。
- **キャッシュ:** このSDKは実行スピードをブーストするためにキャッシュを組み込んでおり、再現可能な結果を生成し、コストを削減します。

# サンプル

English SDKをどのように使うのかを説明するために、いくつかの例を見ていきましょう:

## データ取り込み

あなたが2022年のUSAの国内自動車販売のデータを取り込む必要があるデータサイエンティストであるとした場合、たった2行のコードでこれを行うことができます:

```py
spark_ai = SparkAI()
auto_df = spark_ai.create_df("2022 USA national auto sales by brand")
```

## データフレームオペレーション

データフレーム`df`がある場合、このSDKによって`df.ai`で始めるメソッドを実行することができます。これには、変換処理、プロット、データフレームの説明などが含まれます。

PySparkデータフレームの一部の機能有効化するには:

```py
spark_ai.activate()
```

`auto_df`の概要を参照します:

```py
auto_df.ai.plot()
```
![](https://cms.databricks.com/sites/default/files/inline-images/image4_1.png)

自動車企業におけるマーケットシェアの分布を見るには:

```py
auto_df.ai.plot("pie chart for US sales market shares, show the top 5 brands and the sum of others")
```
![](https://cms.databricks.com/sites/default/files/inline-images/image2_2.png)

最も成長したブランドを取得するには:

```py
auto_top_growth_df=auto_df.ai.transform("top brand with the highest growth")
auto_top_growth_df.show()
```
![Screenshot 2023-06-30 at 17.14.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7ba6fb2e-c390-9ca3-b5bd-6f0d34ac50f8.png)

データフレームの説明を得るには:

```py
auto_top_growth_df.ai.explain()
```
*In summary, this DataFrame is retrieving the brand with the highest sales change in 2022 compared to 2021. It presents the results sorted by sales change in descending order and only returns the top result.*

## ユーザー定義関数(UDF)

このSDKはシンプルでさっぱりとしたUDF作成プロセスをサポートしています。`@spark_ai.udf`デコレーターを用いることで、docstringを持つ関数を宣言するだけでよく、SDKはここで必要なコードを自動で生成します:

```py
@spark_ai.udf
def convert_grades(grade_percent: float) -> str:
    """Convert the grade percent to a letter grade using standard cutoffs"""
    ...
```

これで、SQLクエリーやデータフレームでこのUDFを使えるようになります。

```sql
SELECT student_id, convert_grades(grade_percent) FROM grade
```

# まとめ

Apache SparkのEnglish SDKは、非常にシンプルですが、皆様の開発プロセスを劇的に強化することができるパワフルなツールです。複雑なタスクをシンプルにし、必要なコードの量を削減し、あなたがあなた自身のデータから洞察を導き出すことにさらにフォーカスできるように設計されています。

English SDKは開発の初期ステージにいますが、このポテンシャルにワクワクしています。この革新的なツールを探索し、まずはメリットを体験し、プロジェクトへの適用を検討することをお勧めします。革命を観察するだけはなく、その一部となりましょう。すぐにでも[pyspark\.ai](http://pyspark.ai/)でこのEnglish SDKのパワーを探索して活用してください。あなたの洞察や参画は、English SDKの改善やApache Sparkのアクセシビリティの拡張においてかけがえのないものとなります。

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)