するめごはんのIT日記

主にITネタを書いていくのさ

AWS Glueがバグってるぅ~

ごきげんよう

AWS Glue(以下、Glue)のバグを踏みました。
ちなみに ぐるー って呼びます。

Glueを使おうとしたら、どうもうまく動かん。
いろんなところで、うまく動かん。

結果的にGlueそのものの不具合だったというお話。

原則、CLIではなく画面ポチポチでのお話。

そもそもGlue is 何

AWSのサービスのうちの1つでETLツール(データ分析とかするやーつ)です。

aws.amazon.com

市販本であんまりGlueを使った話は目にしない。

PySparkが使えるので、データ量が多いとうまく並列に動いてくれる。

使いこなせれば。

日本語対応しきれていない

S3のデータをGlueを挟んでETLだー
せっかくなんでRDSに送ってみるぜー

と遊ぼうとしたらどうも動かん。

バリデーションエラーが発生する。

1 validation error detected: Value '28-9月-2018-10-13-午前-UTC' at 'logProperties.logStreamName' failed to satisfy constraint: Member must satisfy regular expression pattern: [\.\-_/#A-Za-z0-9]+ .

よくみたら、提供されているサンプルデータが日本語なのにバリデーションがマルチバイト対応してなくて引っ掛かるという罠。

サポートセンターにお問い合わせしたら、
「あ、ほんとだ。たしかに日本語対応できてないっすね。申し訳ないけどマネジメントコンソールを英語表記に変更してくだしあ。」

って返ってきた。
マジかよ。

CSV形式を読み取れずUnknownになる

S3にCSV形式のファイルを格納しておいて、Glueにて処理をしようとすると、
CSV形式ファイルの中身が1行であった場合はスキーマ判定等が正常動作しない。

2行以上のデータがあるとCSVとして認識されるが、以下のような、1行のみであり、かつ、改行コードが入っているCSV形式のファイルはUnknown扱いになって、クローラーが不具合を起こす。

====
1行目:hoge,foo,huga\n
2行目:なにもなし
====

AWS Loft Tokyoにいらしたエキスパートの方にも聞いてみたら
「え、マジすか?それサポート案件ですわ。報告してくれるとありがたいです」

とのことなので、これもサポートセンターにお問い合わせしたら

「あ、ほんとだ。たしかにうまく動かないわ。すまん。2行以上にしてくれ。」

と返ってきた。
マジかよ。

そりゃあたしかにETLのツールだからデータ元が1行というのはレアケースだろうけども、あり得るのであって、これは残念な感じである。
こういうのがありえるからこそ、使ってみて遊んでたんですけども。

配列は1からではなく0から始まるんだぜ みたいな感じを思い出す。
0行、1行、2行って真っ先にテストするところじゃなかろうか。

というわけで

Glue試してたら他にも思うところがたくさんできたので、今はあんまり使いたくない。。。
あと、そもそもお高い料金です。※他が安すぎるんだけども。

aws.amazon.com

現在、本来やろうとしてることにホントにGlueを使うと、Glueの料金だけで月3桁ドルとかいきそうだったんで、結構なお値段です。

他のサービスや通信類は別料金なわけなので、Glueが活躍するようなETLをガンガンやる場合は、結構儲かってるのが前提なんじゃないかなと思いましたっと。