LoginSignup
4
5

More than 5 years have passed since last update.

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

Posted at

出会いは突然に…

ふらっと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のようなサービスを活用してデータをクレンジングしましょう。
ではまた!

4
5
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
4
5