技術ブログ

AWS GlueのクローラーがCSVヘッダーを抽出できない問題を解決する方法

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

問題

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

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してください。

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

ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。

  • 選考ではありません
  • 履歴書不要
  • 技術の話が中心
  • 所要時間30分程度
  • オンラインOK

エンジニアと話してみる