AWS re:Invent 2022 「for Apache Spark」に見るデータエンジニアリングのトレンド

# はじめに
株式会社NTTデータ [Data & Intelligence事業部](https://enterprise-aiiot.nttdata.com/) の [nttd-saitouyun](https://qiita.com/nttd-saitouyun) です。

昨年12月の AWS re:Invent 2022 にて、以下の「for Apache Spark」機能が発表されました。
- Amazon Redshift integration **for Apache Spark**
- Amazon Athena **for Apache Spark**

Amazon DataZoneなど他にも目玉はあるものの、re:Inventで「for Apache Spark」という名がついた機能が２つも発表されていることには意味があると考え、本記事では、なぜ今「for Apache Spark」なのかについて考察してみました。


# 「for Apache Spark」について

## Apache Spark とは
[Apache Spark](https://spark.apache.org/)は、大規模なデータに対してオンメモリで高速に分散処理を行うオープンソースのフレームワークです。大量データの高速な処理から、機械学習等の分析業務への適用など幅広く利用されています。NTTデータには、Apache Sparkのコントリビューターが多数在籍しています。

https://oss.nttdata.com/spark/spark.html


以下のような特徴があり、現在においても非常に人気のあるソフトウェアです。
- クラウドによりHadoopクラスタなど分散処理環境を簡単に構築できるようになった。
- データから価値を創出するために、ビッグデータ処理のニーズが増えている。
- PythonやSQLなど様々なAPIで容易に利用できる。



## AWSにおける Apache Spark
分析、機械学習サービスを中心として、多くのサービスでApache Sparkが利用できます。細かい点には触れませんが、概要を記載します。

### AWS Glue
[AWS Glue](https://aws.amazon.com/jp/glue/)は、サーバレスのETLサービスです。大規模データの処理に、Apache Sparkの処理をサーバレスに実行することができます。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/spark_and_pyspark.html

### Amazon EMR
[Amazon EMR](https://aws.amazon.com/jp/emr/)は、Apache SparkやApache Hiveなどの分散処理環境を簡単に構築できるサービスです。Apache Sparkのクラスタをクラウド環境に容易に構築することができます。

https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-spark.html

### Amazon SageMaker
[Amazon SageMaker](https://aws.amazon.com/jp/sagemaker/)は、機械学習モデル構築の様々な機能を提供するサービスです。Apache Sparkを使ったデータ処理の結果を使って、機械学習モデルの作成ができます。また、Spark ML（Apache Sparkの機械学習ライブラリ）を使って構築した機械学習モデルのサービングも可能です。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/apache-spark.html

### Amazon Ahtena [NEW]
[Amazon Athena](https://aws.amazon.com/jp/athena/)は、Amazon S3で構築されたデータレイクや様々なデータソース上にある大規模データに対して、サーバレスにインタラクティブにクエリを実行できるサービスです。

re:Invent 2022にて、[Amazon Athena for Apache Spark](https://aws.amazon.com/jp/athena/spark/)という機能が発表され、SQL以外にPythonによる処理が実施可能になりました。

以前は、SQLを使用してAmazon S3の大規模データをクエリするサービスだったので、進歩が著しいです。


### Amazon Redshift [NEW]
[Amazon Redshift](https://aws.amazon.com/jp/redshift/)は、データウェアハウスサービスです。

re:Invent 2022にて、[Amazon Redshift Integration for Apache Spark](https://aws.amazon.com/jp/redshift/features/integration-for-apache-spark/)という機能が発表され、上述した、Amazon EMR、AWS Glue、Amazon SageMakerのSparkの処理からRedshift上のデータを読み書きを容易に実施できるようになりました。（これまでは3rd Party製のコネクタが必要でした。）

https://aws.amazon.com/jp/blogs/news/new-amazon-redshift-integration-with-apache-spark/



## Databricks on AWS
AWS上でApache Sparkを利用する選択肢として、これまで紹介したAWSマネージドサービス以外に、Databricksがあります。
[Databricks](https://www.databricks.com/jp)とは、**Apache Sparkの創始者**であるマテイ・ザハリア氏と共に、アリ・ゴディシ氏が立ち上げた会社です。「**AIとデータの民主化**」をミッションとしています。Apache Spark、MLflow、Delta LakeといったOSSを組み合わせた、統合データ分析プラットフォームを提供しています。


# なぜ 「for Apache Spark」なのか
では、なぜ今「for Apache Spark」なのかについて考察していきます。

## SQL「+ Python」
この疑問を持ちながら、re:Inventのセッションを回っていたところ、Athenaの新機能セッションで１つの解が示されていました。それは、「**SQLだけでは複雑な処理を表現しきれない**」ことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/c03a1ed9-7f9b-c2c2-5c8f-a5e6232d1189.png)
※キャプチャは[AWS re:Invent 2022 - What’s new in Amazon Athena (ANT208)](https://www.youtube.com/watch?v=vhO8Qst5Vhc)より取得

これは、**SQLが不要になるといっているわけではなく、状況によっては物足りないケースが増えてきているということを表しています**。例えば、
- 処理対象のデータが構造化データから準構造化データ・非構造化データまで広がっている。
- データ処理にAPI（例えば、Amazon SageMakerによる推論処理）を呼び出したり、データ加工処理内容が高度化している。
- 特徴量エンジニアリング（機械学習の前処理）などSQLでは実施が難しいデータ加工処理が増えている。

などがあると思います。

この課題に対して、外部ライブラリなども利用でき、より豊富なAPIがあるPythonが使われています。
Pythonのケイパビリティを大規模データ処理に適用するために、Apache Sparkが利用されているようです。

## スケーラブルPythonの種類
Pythonのケイパビリティを大規模データ処理にApache Sparkが使われると言いましたが、他のソフトウェアではできないのでしょうか？

あります。それが「[**Ray**](https://www.ray.io/)」です。
そして、同じくre:Inventで、[AWS Glue for Ray](https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-glue-ray-preview/)の発表がありました。

そして、re:Inventから数か月後、DatabricksからもRayの対応が発表されました。
[Announcing Ray support on Databricks and Apache Spark Clusters](https://www.databricks.com/blog/2023/02/28/announcing-ray-support-databricks-and-apache-spark-clusters.html)

一般的には、データ処理のワークロードではApache Sparkが強く、機械学習のワークロードではRayが強いと言われています。


## DWHサービスの傾向
上記の説明によって、Amazon AthenaやAmazon Redshiftの「for Apache Spark」対応の説明はできそうです。

では、他のDWHサービスはどうでしょうか？
GCPでは、BigQueryにApache Sparkを統合した[BigLake](https://cloud.google.com/biglake?hl=ja#:~:text=BigLake%20%E3%81%AF%E3%80%81BigQuery%20%E3%81%A8%20Spark,%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%20%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%A7%E3%81%99%E3%80%82)が2022年4月に発表されています。
また、Snowflakeでは、[Snowpark](https://docs.snowflake.com/ja/developer-guide/snowpark/index)というPythonをはじめとするSQL以外の言語でデータ処理や機械学習が可能なAPIを2021年に公開しています。

これらのように、AWS以外でも同じような傾向があることが分かります。

**多様化するデータの種類や機械学習などのユースケースの多様化に合わせて、DWHサービスはこれまでデータレイクサービスが得意としていた機能を取り込む形で進化している**のではないかと思います。



# データレイクサービスの傾向
では、反対にAWS GlueやAmazon EMRなどのデータレイクサービスにはどのような傾向があるのでしょうか？

同じくre:Inventで発表された[Glue 4.0](https://aws.amazon.com/jp/blogs/news/new-aws-glue-4-0-new-and-updated-engines-more-data-formats-and-more/)では、**Apache Hudi、Apache Iceberg、Delta Lake などのACIDトランザクションやタイムトラベル機能をサポートするストレージフォーマットへの対応**が行われています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/8126bcfb-0d4f-e3a1-c867-e6dcb7f2a188.png)

EMRにおいても最新のランタイム6.9.0において、同様のストレージフォーマットがサポートされています。
- [Amazon EMR 6.8 が Apache Hudi 0.11.1 および Apache Iceberg 0.14.0 をサポート](https://aws.amazon.com/jp/about-aws/whats-new/2022/10/emr-6-8-supports-apache-hudi-0-11-1-apache-iceberg-0-14-0/)
- [Delta Lake - Amazon EMR](https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-delta.html): Amazon EMR リリース 6.9.0 以降、デルタレイクテーブルを含む Amazon EMR クラスターで Apache Spark 3.x を使用できます。
<br>

さらに、Athenaも、[Athena ACID トランザクションの使用](https://docs.aws.amazon.com/ja_jp/athena/latest/ug/acid-transactions.html)を確認すると同様であることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/3301fe64-a0e8-b2eb-d8fd-87806832e63a.png)

そもそも、これらのストレージフォーマットの対応以前では、Lake Formationの[Governed tables](https://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/governed-tables.html)がこれらのACIDトランザクションやタイムトラベル機能を実現していました。

以上のように、**データレイクサービスは、ACIDトランザクションやタイムトラベルといったDWHサービスが持っている機能を取り込む形で進化している**ようにみえます。

# データエンジニアリングのトレンド
「for Apache Spark」を出発点に様々なサービスのアップデート内容を考察してきました。
ここまでみてきた通り、**DWHサービスとデータレイクサービスは互いに足りない機能を補うように機能拡張している**ように見えます。今後、これらのサービスはどのように進化していくのでしょうか？

## DWH + データレイク ＝ データレイクハウス
１つの解として考えられるのが、「**データレイクハウス**」です。
[データレイクハウス](https://www.databricks.com/jp/glossary/data-lakehouse)は、Databricks社が提唱したDWHとデータレイクの良いところ採りをした新しいデータ基盤プラットフォームの考え方です。データ**レイク**とデータウェア**ハウス**の造語です。

この考え方は、AWSなど他社にまで広がっており、Gartner Hype Cycle for Data Managementにもキーワードとして扱われています。

この**データレイクハウスアーキテクチャのように、多種多様で様々な規模のデータの処理や、アナリティクスやビジネスインテリジェンスから機械学習といった様々なユースケースに対応できるようなケイパビリティを持ったデータ基盤**がトレンドとなっているのではないでしょうか。


## データレイクハスに関する参考情報
よりデータレイクハウスを詳しく知りたい方向けに参考情報を記載します。

データウェアハウスの父と称されるビル・インモン（Bill Inmon）氏による著書が出版されています。（権威のある情報源ですが、難しくもあります。）
- Building the Data Lakehouse
- The Data Lakehouse Architecture 
- Rise of the Data Lakehouse
<br>

AWS においてもレイクハウスについて、次のような情報が公開されています。
- [Databricks on AWS](https://aws.amazon.com/jp/featured-partners-jp/Databricks/)
- [セキュアでスケーラブルなデータ分析基盤を実現する Lake house architecture on AWS](https://pages.awscloud.com/rs/112-TZM-766/images/20210325-04_Data-Analytics-DataLake.pdf)
<br>

筆者もデータレイクハウスに関する解説記事を記載しています。興味があればご覧ください。
 - [サイロ化を解消し「データとAIの民主化」を加速 DWHとデータレイクの溝を埋める決定打とは？](https://it.impress.co.jp/articles/-/24161)
<br>


## より洗練されたデータレイクハウスへ
データレイクハウスアーキテクチャは、これまでもDWHサービスとデータレイクサービスを組み合わせることで実現できました。例えば、R Amazon RedshiftとAWS Glueを併用するケースです。このアーキテクチャでも幅広いデータ処理や分析ユースケースに対応することができますが、**両サービス間のデータの移動コストやガバナンス・セキュリティをそれぞれのサービスで実現しなければならないなど、課題も残ります**。

この課題を解決するために、Amazon Athena for Apache Sparkのように**１つのサービスでレイクハウスを実現できる**ようになったり、Amazon Redshift integration for Apache Sparkのように**データレイクとDWHの継ぎ目を減らす**ような機能アップデートがなされているのではないでしょうか。


# おわりに
いかがでしたでしょうか？
「for Apache Spark」を出発点に、re:Inventで発表されたアナリティクスサービスの**様々なアップデートに触れて、その裏にあるトレンドを考察してみました**。 そして、トレンドの１つである**データレイクハウス**について紹介を行いました。

データエンジニアリング領域は、技術進歩が激しい領域なので、今後も各サービスのアップデートからは目が離せません！
**トレンドを知り、新機能を有効に活用して、データをより価値あるものにしていきましょう！！**



# 仲間募集中！
NTTデータ [Data&Intelligence事業部](https://enterprise-aiiot.nttdata.com/) では、以下の職種を募集しています。

<details>
<summary>
1. 「クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)」の募集
</summary>
クラウド/プラットフォーム技術の知見に基づき、ITアーキテクトまたはPMとして、DWH、BI、ETL領域における、ソリューション開発の推進や、コンサルティング工程のシステムグランドデザイン策定時におけるアーキテクト観点からの検討を行う人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=808

</details>

<details>
<summary>
2. AI／データ活用を実践する「クラウド・ソリューションアーキテクト」の募集
</summary>
AI／データ活用を実践する「クラウド・ソリューションアーキテクト」として、クラウド先進テクノロジーを積極活用し、お客様のビジネス価値創出活動を実践。AI／データ活用の基本構想立案コンサルティングからクラウドプラットフォーム提供・活用を支援しています。お客様のAI・データ活用を支援するクラウド・ソリューション提案、アーキテクチャ設計・構築・継続活用支援（フルマネージドサービス提供）、および最新クラウドサービスに関する調査・検証で、クラウド分析基盤ソリューションのメニュー拡充を実施する人材を募集します。

https://nttdata.jposting.net/u/job.phtml?job_code=807

</details>

<br>
<br>
また、取り扱う主なソリューションについては、以下のページも参照ください。

# ソリューション紹介
<details>
<summary>Trusted Data Foundation について</summary>
～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

https://enterprise-aiiot.nttdata.com/tdf/

</details>