Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@seri

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

事象

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?