LoginSignup
0
0

More than 3 years have passed since last update.

非インフラエンジニアが理解の為に、AWS Glueを使ってみる

Posted at

Glue。。接着剤?
なるほど、わからん!というレベルの非エンジニアが
実際に触りながら、理解するためにまとめている記事。

ゴール

Glueを実際に触って、利便性が理解出来ることを目指す

なには、ともあれ触っていきましょう!

S3での操作

まずは、いろいろ利用するストレージの確保

手順

まずは、S3でテスト用のバケットを作成(設定はデフォルト)
構成は下記の通り。

s3
 ├ 20200921testglue001in   - 入力CSV置き場
 ├ 20200921testglue001out  - 出力ファイルの置き場所(今回は、parquetファイルを格納)
 ├ 20200921testglue001athena - athena実行用
 ├ 20200921testglue001script - Glueジョブの実行用
 └ 20200921testglue001temp - Glueジョブの為の一次領域

続いて、下記CSVファイルを「20200921testglue001in」へアップロード

deviceid,uuid,appid,country,year,month,day,hour
iphone,11111,001,JP,2017,12,14,12
android,11112,001,FR,2017,12,14,14
iphone,11113,009,FR,2017,12,16,21
iphone,11114,007,AUS,2017,12,17,18
other,11115,005,JP,2017,12,29,15
iphone,11116,001,JP,2017,12,15,11
pc,11118,001,FR,2017,12,01,01
pc,11117,009,FR,2017,12,02,18
iphone,11119,007,AUS,2017,11,21,14
other,11110,005,JP,2017,11,29,15
iphone,11121,001,JP,2017,11,11,12
android,11122,001,FR,2017,11,30,20
iphone,11123,009,FR,2017,11,14,14
iphone,11124,007,AUS,2017,12,17,14
iphone,11125,005,JP,2017,11,29,15
iphone,11126,001,JP,2017,12,19,08
android,11127,001,FR,2017,12,19,14
iphone,11128,009,FR,2017,12,09,04
iphone,11129,007,AUS,2017,11,30,14

Glueでの操作

クローラの設定(データカタログを作成する準備~実行)

まずは、クローラーを作成してみます。
CSVファイルを取り込みテーブルを自動で作成してくれます。

image.png

クローラに関する情報の追加

クローラーの名前は、任意につけてしまってOK

image.png

Specfy crawler source type

クローラーのソースタイプ
ここはデフォルト値のまま

image.png

データストアの追加

インクルードパスは、先ほどCSVファイルをアップロードしたファイルを選択

image.png

別のデータストアの追加

「いいえ」ここでは特に追加しない

IAMロール

以下のポリシーを付与した任意の名前のロールを作っておく。
・AmazonS3FullAccess
・AWSGlueServiceRole

image.png

スケジュール

オンデマンドで実行を選ぶ

クローラの出力を設定する

出力されるテーブルの設定
データベースがなければ、「データベース」の追加をクリック

image.png

すべてのステップの確認

最後に、確認画面がでるので、「完了」をクリックすればクローラの設定は完了

クローラの実行

オンデマンドでの設定をしているので、クローラーを選択しクローラ時の実行を選ぶ

image.png

 ↓

image.png

1分程度で処理が終わる

作成されたテーブルを確認してみよう

image.png

サイドバーのテーブルを接続すると、新しいテーブルが出来ていることが確認できる

image.png

テーブルの情報各種が見れる状態となっている。
不要なカラムを削除したりすることもできる

image.png

Athenaでの操作(データカタログへのアクセス)

ここまでできたら、作成されたData catalogにAthenaでアクセスし、
データが取り出せるかをテストする

image.png

シンプルなSQLを記述して実行、
無事にCSVファイルを取り込んだものからSQLが実行できることが確認できる。
※初回などS3に保存場所を確保していないときは、Run Queryが出来ないので設定してください。

image.png

Glueでの操作

ジョブを作成

image.png

ジョブのプロパティ設定

名前:適当に
IAMロール:先ほどの、Athenaで使用したものと同じ
Type:今回はSpark
スクリプトファイル名:デフォルト
スクリプトが保存されているS3パス:任意のパスを指定
一次ディレクトリ:任意のパスを指定

image.png

データソースの選択

最初にアップロードしたCSV選択

image.png

変換タイプの選択

デフォルト値

データターゲットの選択

データストア:AmazonS3
形式:Parquet
ターゲットパス:出力したいS3パスを指定

image.pngimage.png

ソース列をターゲット列にマッピング

必要があれば修正、今回はそのまま次へ

image.png

ジョブの実行

image.png

エラーの時は、Cloud watch logに内容が書き出される

成功時にはステータスがSuccessedとなり
S3のout用フォルダに、Parquetフォーマットのファイルが作成されている。

image.png

もう一度、クローラ設定で、読み込ませてみる。

先ほどと同様に、クローラ設定をし、今度はparquetフォーマットのファイルを読み込ませて
同様にAthenaで取り出してみる

image.png

フォーマットがparquetに変換されたので
列単位での集計処理などが高速化されるデータフォーマットに変換ができました。

最後に

ここでやった処理は、以下の通りです。

CSV→テーブル変換→parquetで出力→テーブル変換

これだけだと、何が便利かわかりづらいのですが。

今回はオンデマンドで実行していたのですが、
実践の場面では、トリガーを組み合わせることで、
以下のような事が出来るようになる為、便利そうだと感じました。

  • 何かしらのフォーマットをアップロード→スケジュールが来れば実行→最適な形式へ変換
  • 定期出力されるCSV→スケジュールごとに実行して最適な形式へ変換
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0