LoginSignup
3
2

More than 5 years have passed since last update.

EmblukでS3に吐いた複数ファイルをGlueでカタログ化する際の注意

Posted at

事象

EmbulkでS3に出力したファイルから、Glueでデータカタログを作成しようとしたところ、入力元データ1に対し、出力は複数だったため、カタログとしては1つでいいのだが、複数ファイル分カタログ(テーブル)ができてしまった。

対処案1:Embulkの出力を1つにする

Embulkは特に指定をしないと、実行したマシンのCPU数分タスクを動作させてファイルを出力するので、min_output_tasks:1とすれば、出力ファイルも1つになるので、カタログの問題は解消する。
だが、その場合Embulkの並列処理が活かせない。

対処案2:クロール対象を1つにする

Glueのクローラ設定で、『データストア』の項目にあるエクスクルードパターンを設定し、1ファイルのみが対象となるようにして対処することもできた。
Embulkの場合、XXXXXX.000.00.tsv.gzのようなファイルが(特にいじらなければ)吐かれるので、この000のファイルのみを対象とするのである。

エクスクルードパターン **/**0[0-9][1-9]**

だがこの場合、テーブルのプロパティに表示される情報(例えばrecordCount)が、1ファイルのものとなっているため、複数ファイルも含めた全量はここから把握できない。

結論

Glueをデータの詳細を知るためのデータカタログとして使うのであれば、現状出力を1ファイルにまとめる必要がありそうだった。
Athenaで利用する定義として使うだけであれば、対処案2の方法でも良いと思う。

番外:よくわからない項目

『クローラに関する情報の追加』に『Grouping behavior for S3 data (optional)』という項目があり、感覚的にはこれのチェックをつけると、複数ファイルでもデータ構造が同じであれば1つとして認識してくれそうだったが、そんなことはなかった。

  • Create a single schema for each S3 path
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2