2019-06-10 weeklyまとめ

株式会社FiNC Technologiesを退職した

株式会社FiNC Technologiesを退職しますに予告を書きましたが、退職しました。
最後にぼくがかんがえたさいきょうのSparkアーキテクチャが無事出来たので、とりあえず満足いく終わりになりました。

Sparkと戯れていた

先週に引き続きAWS Glueを使ってPySparkで開発をしてました。

様々なテーブルをjoinし、ユーザごとにデータを集計して /user_id/output_name といったパスに一人づつJSONファイルに出力していましたが、これが遅くなった原因でした。 ユーザを何人かのパーティションにまとめ、 /output_name/partition_key といった複数人をまとめて1つのJSONファイルに出力したところ、数時間かかってた出力処理が数分で終わるようになりました。 書き出し対象はS3なので、ネットワーク越しのI/Oが想像以上にめちゃくちゃ重かったのが原因でした。

この書き出したデータはさらにRailsアプリケーション側で読み込んで使うため、ユーザごとにファイルが別れている方がかなり楽で、それもあって複数ファイルに分割する方針をとっていたのですが、 複雑性を寄せる場所を間違えましたね… とはいえ、Sparkになれた今なら簡単に受け取り処理側を書き換えられたので、結果的には最高の状態に仕上がりました。 ただ、最終的なSparkの処理をexplainすると80行ぐらいになるんですが、はたして他にメンテできる人がいるのか…(PySparkのコードはそこそこきれいなはず)

この問題はSpark UIを見ると一瞬でわかるんですが、GlueだとSpark UIを見るのにかなり苦戦したのであとでまとめようと思います。 AWS Glueだとメトリクスは見れるんですが、各stageの処理内容とかは見られないので…

Repro Tech: 実践・並列分散処理基盤に参加した

https://repro-tech.connpass.com/event/131612/

ちょうどまさにSparkをやっている時にドンピシャの話題があったので⊂(・8・)⊃
実際Sparkだとこれが普通なのかな?と思っていたところに、全然もっと行けそうな話をきいたので調査し直したところ上の結果になったので、間接的にかなり効果がありました( ゚∀゚)o彡゜

ポッドキャストに出ます

きのこるエフエムというポッドキャストにお呼ばれしたので出ます( ゚∀゚)o彡゚