[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のデータソースになるものです。
テーブルといっても実際のデータを持っているのではなく、対象となるデータソースのプロパティだったりとか、スキーマなどを持っているものになります。
クローラを回して作成していきましょう。
完了を押すと、クローラのリスト画面に戻りこのようなメッセージが出るので、「今すぐ実行しますか?」をクリックして、クローラを実行します。
対象クローラのステータスが「Stopping」になれば完了しています。
作成したテーブルの情報は、テーブルのリスト画面で確認することができます。
ジョブの追加 / 実行
ジョブを追加していきます。
成功するとS3にファイルが生成されています。
中身はこんな感じ
{
"id":"hoge",
"record_time":"2018/10/26T00:00:00Z",
"sensor_value":"100"
}
ちゃんと sensor value
が sensor_value
に変換されていますね!
さいごに
今回はDynamoDBからデータを抽出して、変換・加工してS3にオブジェクトをputするようなジョブを書きました。
DynamoDBを利用していると、割とアトリビュートの命名規則などがなんでもOKみたいな世界があり、今回のように半角スペースが含まれているなんて自体が発生します。
もちろんデータ設計、テーブル設計の段階で弾ければいいのですが、そうも行かない場合があります。
せっかく溜まったデータを分析できないままではただのゴミデータになってしまうので、Glueのようなサービスを活用してデータをクレンジングしましょう。
ではまた!
Author And Source
この問題について([AWS]AWSGlueを使ってデータをクレンジングする), 我々は、より多くの情報をここで見つけました https://qiita.com/is_ryo/items/1720b875425015401898著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .