[AWS]AWSGlueを使ってデータをクレンジングする

[AWS]AWSGlueを使ってデータをクレンジングする:


出会いは突然に…

ふらっとDynamoDBを眺めていると、信じられないアトリビュートでデータがputされているのを発見しました。

まぁ何かって言うと、アトリビュートに半角スペースが入っているだとぉ!?!?

{ 
  "id": "hoge", 
  "record_time": "2018/10/26T00:00:00Z", 
  "sensor value": "100" 
} 
sensor value みたいな感じで半角スペースが入っていました。


何が困るか

DynamoDBからJSONをS3に吐き出してAthenaでデータを解析しようとすると、当然半角スペースが存在しているので失敗します。

SQLで半角スペースがアトリビュートに入っているなんてことありえませんからね…


そんなときにAWSGlue

AWSGlueはETLのサービスです。

最近DynamoDBをデータソースに指定することができるようになりました。

AWSGlueではデータソースから取得したデータをJSONなどに変換してS3などに置くことができます。

なので半角スペースを _ などに変換してJSONを吐き出していきます。


Glueを使っていく


テーブルの作成

まずテーブルを作成する必要があります。

このテーブルはGlueのデータソースになるものです。

テーブルといっても実際のデータを持っているのではなく、対象となるデータソースのプロパティだったりとか、スキーマなどを持っているものになります。

クローラを回して作成していきましょう。



AWS Glue Console 2018-10-26 13-35-03.png




AWS Glue Console 2018-10-26 13-37-36.png




AWS Glue Console 2018-10-26 13-39-01.png




AWS Glue Console 2018-10-26 13-40-43.png




AWS Glue Console 2018-10-26 13-41-26.png




AWS Glue Console 2018-10-26 13-42-21.png




AWS Glue Console 2018-10-26 13-43-06.png




AWS Glue Console 2018-10-26 13-44-18.png


完了を押すと、クローラのリスト画面に戻りこのようなメッセージが出るので、「今すぐ実行しますか?」をクリックして、クローラを実行します。

AWS Glue Console 2018-10-26 13-45-23.png

対象クローラのステータスが「Stopping」になれば完了しています。

AWS Glue Console 2018-10-26 13-47-45.png

作成したテーブルの情報は、テーブルのリスト画面で確認することができます。



AWS Glue Console 2018-10-26 13-50-28.png




AWS Glue Console 2018-10-26 13-51-35.png



ジョブの追加 / 実行

ジョブを追加していきます。



AWS Glue Console 2018-10-26 13-53-03.png




AWS Glue Console 2018-10-26 13-54-07.png




AWS Glue Console 2018-10-26 13-57-09.png




AWS Glue Console 2018-10-26 14-03-34.png




AWS Glue Console 2018-10-26 14-02-11.png




AWS Glue Console 2018-10-26 14-05-14.png




AWS Glue Console 2018-10-26 14-06-46.png


成功するとS3にファイルが生成されています。

中身はこんな感じ

{ 
  "id":"hoge", 
  "record_time":"2018/10/26T00:00:00Z", 
  "sensor_value":"100" 
} 
ちゃんと sensor valuesensor_value に変換されていますね!


さいごに

今回はDynamoDBからデータを抽出して、変換・加工してS3にオブジェクトをputするようなジョブを書きました。

DynamoDBを利用していると、割とアトリビュートの命名規則などがなんでもOKみたいな世界があり、今回のように半角スペースが含まれているなんて自体が発生します。

もちろんデータ設計、テーブル設計の段階で弾ければいいのですが、そうも行かない場合があります。

せっかく溜まったデータを分析できないままではただのゴミデータになってしまうので、Glueのようなサービスを活用してデータをクレンジングしましょう。

ではまた!

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)