S3に置いたcsvのファイルをGlueのCrawlerがクロールする時に、意図通りにヘッダーを取得しない場合があります。

Table of Contents

問題

たとえば以下のファイルをクロールしてヘッダーを検出したいとします。

accountsubject
売上高りんご
売上高さかな

このcsvをS3にアップロードして、Glueでクローリングしてもcol0 col1のようになってしまう現象です。

#Column nameData typePartition keyComment
1col0string
2col1string

原因

問題の原因は、GlueクローラーがCSVファイル内の引用符(Quote symbol)の扱いを正しく解釈できなかったことです。

解決方法

Glueの左のペインからCrawlers -> Classfiersを開いて、クローラーに関連付けるCSVデータの分類方法を定義しましょう。

Classfier typeCSV
CSV Serdeデフォルト
Column delimiterComma (,)
CSVファイルの区切り文字を選択
Quote symbolSpace
CSVファイルの引用符を選択
Column headingsHas headings
CSVにヘッダーがあれば
Processing optionsデフォルト
Custom Datatypeデフォルト

再度クローラーをrunしてください。

期待通りの結果になりました。