[AWS]AWSGlueを使ってデータをクレンジングする
[AWS]AWSGlueを使ってデータをクレンジングする:
ふらっとDynamoDBを眺めていると、信じられないアトリビュートでデータがputされているのを発見しました。
まぁ何かって言うと、アトリビュートに半角スペースが入っているだとぉ!?!?
DynamoDBからJSONをS3に吐き出してAthenaでデータを解析しようとすると、当然半角スペースが存在しているので失敗します。
SQLで半角スペースがアトリビュートに入っているなんてことありえませんからね…
AWSGlueはETLのサービスです。
最近DynamoDBをデータソースに指定することができるようになりました。
AWSGlueではデータソースから取得したデータをJSONなどに変換してS3などに置くことができます。
なので半角スペースを
まずテーブルを作成する必要があります。
このテーブルはGlueのデータソースになるものです。
テーブルといっても実際のデータを持っているのではなく、対象となるデータソースのプロパティだったりとか、スキーマなどを持っているものになります。
クローラを回して作成していきましょう。
完了を押すと、クローラのリスト画面に戻りこのようなメッセージが出るので、「今すぐ実行しますか?」をクリックして、クローラを実行します。
対象クローラのステータスが「Stopping」になれば完了しています。
作成したテーブルの情報は、テーブルのリスト画面で確認することができます。
ジョブを追加していきます。
成功するとS3にファイルが生成されています。
中身はこんな感じ
ちゃんと
今回はDynamoDBからデータを抽出して、変換・加工してS3にオブジェクトをputするようなジョブを書きました。
DynamoDBを利用していると、割とアトリビュートの命名規則などがなんでもOKみたいな世界があり、今回のように半角スペースが含まれているなんて自体が発生します。
もちろんデータ設計、テーブル設計の段階で弾ければいいのですが、そうも行かない場合があります。
せっかく溜まったデータを分析できないままではただのゴミデータになってしまうので、Glueのようなサービスを活用してデータをクレンジングしましょう。
ではまた!
出会いは突然に…
ふらっと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のデータソースになるものです。
テーブルといっても実際のデータを持っているのではなく、対象となるデータソースのプロパティだったりとか、スキーマなどを持っているものになります。
クローラを回して作成していきましょう。
完了を押すと、クローラのリスト画面に戻りこのようなメッセージが出るので、「今すぐ実行しますか?」をクリックして、クローラを実行します。
対象クローラのステータスが「Stopping」になれば完了しています。
作成したテーブルの情報は、テーブルのリスト画面で確認することができます。
ジョブの追加 / 実行
ジョブを追加していきます。成功するとS3にファイルが生成されています。
中身はこんな感じ
{ "id":"hoge", "record_time":"2018/10/26T00:00:00Z", "sensor_value":"100" }
sensor value
が sensor_value
に変換されていますね!
さいごに
今回はDynamoDBからデータを抽出して、変換・加工してS3にオブジェクトをputするようなジョブを書きました。DynamoDBを利用していると、割とアトリビュートの命名規則などがなんでもOKみたいな世界があり、今回のように半角スペースが含まれているなんて自体が発生します。
もちろんデータ設計、テーブル設計の段階で弾ければいいのですが、そうも行かない場合があります。
せっかく溜まったデータを分析できないままではただのゴミデータになってしまうので、Glueのようなサービスを活用してデータをクレンジングしましょう。
ではまた!
コメント
コメントを投稿