本格的に利用し始めて8ヶ月が経とうとしています。使い慣れてきましたので、少しずつナレッジを公開していこうと思います^^今回のテーマ私は様々なログデータをBigQueryに格納するためにCDFを利用しています。オンプレミス環境のデータを分析に利用しようとするとWindows環境上にZIPファイルでアーカイブされていたりすることがあります。配置された比較的大きいZIPファイルを解凍しBigQueryに取り込むためのCDF設定方法について紹介したいと思います。[2]というプラグインがあります。Transformカテゴリの1つで取り込んだデータの解凍処理を行うプラグインです。使用例は過去投稿したブログも参考にしていただければと思います。https://zenn.dev/hssh2_bin/articles/478e6a41e103c7#4.-zip解凍処理さて、どんな苦労があったのか、、このプラグインを利用していて、パイプラインが失敗する事象に遭遇することになりました。具体的には、以下のログがCDFで出力されていました。~[scala-library-2.11.8.jar:na]!Java仕様上、解凍後のファイルサイズが上限2GBを超えるとOutOfMemoryになります。CDFでは解凍後2GBを超えるZIPファイルを処理できないのか、、と途方に暮れてました。ところが、HUBでとあるプラグインを追加することで本事象は解消できることがわかりました。今回紹介するプラグイン下記のプラグインの使い方を紹介します。[5]これらは、いずれもActionカテゴリのプラグインになります。Actionプラグインはパイプラインの途中に挟むことができません。パイプラインの最初(事前処理)もしくは最後(事後処理)に利用します。CDFはバッチとストリーミングの両方に対応しています。GCSフォルダの用途になります。オンプレミス環境からZIPファイルが配置されます。解凍されたCSVファイルが配置されます。BigQueryに取り込みが終わった処理済みZIPファイルが配置されます。プラグインとは今回紹介したい一番重要なプラグインになります。GCSに配置されたZIPファイルを解凍し、解凍後のファイルをGCSに配置します。Decompressorのように解凍できるファイルのサイズに上限はありません。(未検証ですが、HDFSなども指定できるようです)以下、UploadフォルダのZIPファイルの解凍結果をTempフォルダに配置する設定になります。(Default)以下、CDFの設定画面になります。Compressに依存しています。今回の.zipや.tarはアーカイブファイルになりますので、Archivedを指定すれば処理してくれます。処理したいファイル形式に応じて選択してください。Compressedの選択肢また公式ドキュメントにも記載されていますが、example.zipというファイルをTempフォルダに解凍するとgs://Bucket/Temp/example/example.csvのようなパスになります。RecursivelyをTrueに設定するのを忘れないでください。することでPathで指定したパス配下を再帰的にファイル探索するようになります。プラグインはHUBからインストールする必要があります。プラグインで解凍したファイルはパイプライン処理が全部終わっても勝手には削除されません。よって、実行のたびにTempフォルダに解凍後のファイルが溜まってしまいます。プラグインでは、パイプライン実行後にファイルを削除してくれます。Deletegs://<Bucket>/Temp/以下、CDFの設定画面になります。プラグインとは最後に処理が終わったファイルをUploadフォルダからDoneフォルダに移動します。Uploadフォルダに処理済みのファイルが置きっぱなしになっているとジョブ実行のたびに同じファイルを重複して取り込んでしまう恐れがあります。プラグインを使ってファイルを移動します。(Default)以下、CDFの設定画面になります。Action設定画面まとめさて、いかがでしたでしょうか?最終的にはこのようなパイプラインになります。実は、副次的な効果もありました。Sourceプラグインで取り込むファイルがZIP形式であったため、Dataprocでの分散処理がファイル単位となってしまいました。Sourceプラグインで取り込むファイルがCSV形式となりました。そのため、デフォルトで最大128MBにデータのスプリット(分割)が可能になりました。Dataprocで分散できるようになり、処理性能が向上しました。[6]まだまだ活用できていないデータが多く存在していることと思います。Stack実践ガイド[Logstash/Beats編]の著者。データ基盤や分析に関する情報提供やログの活用に困っている人々の課題解決を使命としている。Fusion、Looker、BigQueryに関するナレッジ展開中。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフト券が還元されます。Stack実践ガイド[Logstash/Beats編]の著者。データ基盤や分析に関する情報提供やログの活用に困っている人々の課題解決を使命としている。Fusion、Looker、BigQueryに関するナレッジ展開中。関連投稿Zennエンジニアのための情報共有コミュニティAboutZennについて運営会社お知らせ・リリースGuides使い方Publicationよくある質問LinksTwitterGitHubメディアキットLegal利用規約プライバシーポリシ。