AWS AthenaでS3上のCSVファイルより、テーブルを作成するときにヘッダー行をスキップする方法

これはなに?

Athenaを利用して、S3のCSVファイルを読み込むときにヘッター行をスキップするTips

目次

方法

AthenaでCreateTableする際に、TBLPROPERTIES オプションで 'skip.header.line.count'='1' を指定する。

<例>

CREATE EXTERNAL TABLE `<TABLE NAME>`(
  `id` string, 
  `name` string, 
  `value` bigint)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://<S3 BACKET NAME>/<PATH>'
TBLPROPERTIES (
  'has_encrypted_data'='false', 
  'skip.header.line.count'='1', 
)

動作確認

テストデータ
ヘッダー行が入ったCSVファイルを二つS3上に配置しています。

・test1.csv

ID,Name,Value
1,aaa,100
2,bbb,200
3,ccc,300

・test2.csv

ID,Name,Value
4,hhh,700
5,hhh,500
6,eee,100

ヘッダー行をスキップしていないテーブルの場合

1行目、5行目にヘッダー行が入っています。

f:id:ykoomaru:20200720162727p:plain

ヘッダー行をするテーブルの場合

ヘッダー行が入っていないきれいなテーブルになっています。 f:id:ykoomaru:20200720162747p:plain

最後に

データ分析するのにAthena超便利なので使い倒していきたい。