雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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超便利なので使い倒していきたい。