前回のお話の続き。
非構造化データをAthenaテーブルに追加したい
以下のような非構造化データがS3に格納されてます。
2021-09-03 22:05:35,125 INFO [test] message: I am a student from 1.1.1.1/24 (size: 20.0 KB) 2021-09-03 22:06:35,125 INFO [test] message: I am a student from 1.1.1.1/24 (size: 20.0 KB) [INFO] [test] Script Version: 4.0 Preparing ... Fri Sep 3 22:07:36 UTC 2021
先にクレンジングしたいところではありますが、今回はこれを無理やりAthenaにぶち込みます。
テーブル作成
当該S3バケットは、「<S3バケット名>/year/month/date/hour/」プレフィクスに従って格納されてます。 以下のクエリでテーブルを作成しました。(もっと良い方法があるかもしれない。。。)
CREATE EXTERNAL TABLE IF NOT EXISTS database.table( `contents` string ) PARTITIONED BY ( datehour string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://<S3バケットパス>/' TBLPROPERTIES ( "projection.enabled" = "true", "projection.datehour.type" = "date", "projection.datehour.range" = "2020/01/01/00,NOW", "projection.datehour.format" = "yyyy/MM/dd/HH", "projection.datehour.interval" = "1", "projection.datehour.interval.unit" = "HOURS", "storage.location.template" = "s3://<S3バケットパス>/${datehour}" );