はじめに
Glue JobでデータをS3に作成して、それをBigquery omniで実行しようとしたときにエラーが発生しました。
原因としてはS3に「_\$folder\$」という空のファイルが作成されていたことが原因でした。
_\$folder\$についての詳細はこちらをご覧ください。
回避方法
データを書き込むときにs3://ではなくs3a://というプロトコルを使うと回避できました。
datasink = glueContext.write_dynamic_frame.from_options(
frame = your_dynamic_frame,
connection_type = "s3",
connection_options = {"path": "s3a://bucket-name/prefix"}, // ここがs3aになっています
format = "parquet"
)
おわりに
調べてみると大規模なファイルの処理をするときはs3aの方がI/O効率が良いらしく推奨されているみたいです。
そこまで推奨しているならGlue関連の記事でもっとs3aについて触れてくれたらいいのにと思った出来事でした。
まだまだ知らないことが多い技術なのでこれからも少しずつ勉強していけたらなと思います。