AWS Glue serverless Spark UI observability metricsを試してみた

# 背景・目的
先日、[Announcing AWS Glue serverless Spark UI and observability metrics](https://aws.amazon.com/about-aws/whats-new/2023/11/aws-glue-serverless-spark-ui-observability-metrics/)が、発表されました。

これにより、GlueでSparkUIで確認できるようになりました。
個人的には、待望の機能だったのでとても嬉しく、早速試してみました。

# まとめ
- Spark UIがGlueに組み込まれました。
- CloudWatchメトリクスで詳細なメトリクスが確認できるようになりました。

# 実践
## 前提
### データを用意
1. Redshiftのドキュメントに添付されているサンプルのデータセットtickitdb.zipをダウンロードします。

1. いくつかのファイルのうち、最も大きいサイズのlisting_pipe.txtを使用します。
    ```
    $ head listings_pipe.txt 
    1|36861|7872|1850|10|182.00|1820.00|2008-01-24 06:43:29
    2|16002|4806|1890|7|233.00|1631.00|2008-03-05 12:25:29
    3|21461|4256|2131|2|182.00|364.00|2008-11-01 07:35:33
    4|8117|4337|1970|8|38.00|304.00|2008-05-24 01:18:37
    5|1616|8647|1963|4|175.00|700.00|2008-05-17 02:29:11
    6|47402|8240|2053|18|77.00|1386.00|2008-08-15 02:08:13
    7|36551|7801|2145|5|30.00|150.00|2008-11-15 09:38:15
    8|11891|8036|2139|6|82.00|492.00|2008-11-09 05:07:30
    9|691|554|2078|6|135.00|810.00|2008-09-09 08:03:36
    10|24858|3375|1994|16|197.00|3152.00|2008-06-17 09:44:54
    $
    ```
1. S3にアップロードします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/5dcbf25b-7b26-2fdf-935a-d5027b14ff61.png)

## Spark UI とObservability metricsの確認
### ジョブの作成
1. 下記のジョブを作成します。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/2201674c-c2fc-0b42-e664-c77cbc66b448.png" width=300>

1. 「Job details」をクリックします。
1. 「Spark UI」と「Job observability metrics」を選択します。（デフォルトでチェック入っています。）
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/a2e60892-7d31-9715-98af-abfa7d1afbd4.png)

1. 最後に「Save」をクリックします。

### ジョブの実行
1. 「Run」をクリックし、ジョブを実行します。
1. Succeededしました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/f4429da9-3999-d5fd-1c15-af59806a4808.png)

### Spark UIの確認
1. 「Spark UI」タブをクリックします。おおぉ、見えました！
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b888b802-f0a5-5dce-ba71-1930dd3eba7a.png)

1. 「Stages」タブをクリックします。Inputで11.58MBです。たしかにデータ量と一致しています。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7e8d061b-64c8-024f-d1ec-19b484545c17.png)

1. 「Executors」タブをクリックします。DriverとExecutorsが1つずつ動いていることがわかります。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/12fe9c3d-40f6-0084-5e00-dcb20436594b.png)

### Observability metricsの確認
1. CloudWatchのトップページに移動します。
1. ナビゲーションペインで「すべてのメトリクス」をクリックします。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/f87a0393-61ac-d323-e578-581023029957.png" width=200>


1. 「Glue」をクリックします。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7e4f8189-ad63-18b9-d0d3-152da8e4b4ac.png" width=300>

1. オブサーバビリティメトリクスをクリックします。
1. 任意のメトリクス、ジョブ名を選択します。
1. グラフ化したメトリクスを選択し、統計、期間などを選択します。確認できました。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/e52a4083-f15c-abbc-7a7d-4c93d353fae6.png)


# 考察
今回、リリースされたSpark UIとObservability metricsを触ってみました。Observability metricsについてはGlueのメトリクスよりも深く見れるので、とてもよいですね。これがGlueのUIで見れると嬉しいです。
また、SparkUIは、今までは、別途DockerコンテナやEC2などで環境を構築しなければならかったのですが、EMRと同様にUIに組み込まれて生産性が爆上がりです。とても嬉しいです。

# 参考

https://aws.amazon.com/about-aws/whats-new/2023/11/aws-glue-serverless-spark-ui-observability-metrics/

https://aws.amazon.com/blogs/big-data/introducing-aws-glue-studio-serverless-spark-ui-for-better-monitoring-and-troubleshooting/

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-spark-ui-jobs.html

https://docs.aws.amazon.com/glue/latest/dg/monitor-observability.html