S3に置いたcsvのファイルをGlueのCrawlerがクロールする時に、意図通りにヘッダーを取得しない場合があります。
問題
たとえば以下のファイルをクロールしてヘッダーを検出したいとします。
account | subject |
売上高 | りんご |
売上高 | さかな |
このcsvをS3にアップロードして、Glueでクローリングしてもcol0
col1
のようになってしまう現象です。
# | Column name | Data type | Partition key | Comment |
1 | col0 | string | – | – |
2 | col1 | string | – | – |
原因
問題の原因は、GlueクローラーがCSVファイル内の引用符(Quote symbol)の扱いを正しく解釈できなかったことです。
解決方法
Glueの左のペインからCrawlers
-> Classfiers
を開いて、クローラーに関連付けるCSVデータの分類方法を定義しましょう。
Classfier type | CSV |
CSV Serde | デフォルト |
Column delimiter | Comma (,) CSVファイルの区切り文字を選択 |
Quote symbol | Space CSVファイルの引用符を選択 |
Column headings | Has headings CSVにヘッダーがあれば |
Processing options | デフォルト |
Custom Datatype | デフォルト |
再度クローラーをrunしてください。
期待通りの結果になりました。