LINEで送る
Pocket

お久しぶりです皆さま、お元気ですか!?最近私は韓国語を勉強し直しており、ハングル文字が読めるようになってきました。(元々高校の時第二外国語で少し話せるレベル)

それよりも!

今回仕事で、Embulkをバージョンアップをする機会がありました。初めて経験したということもあり、ハマりポイントや気をつけることなどをブログしていこうと思います。


■Environment

https://www.embulk.org/

  • embulk 0.8.35 → embulk 0.9.23
  • Ruby 2.4.4p296

現時点でEmbulkの最新バージョンはv0.9.23なのでv0.8から上げることとなりました。あとはステージング環境でバシバシ検証しまくるという感じです。


■Embulk update

  • embulk selfupdate

v0.8.35ということもあってかなり古いバージョンとなります。404となった場合はそもそも公式がv0.10を取ってきてしまうということもあり、まずはv0.8のマイナーバージョンアップから行いましょう。

これでv0.9.23にバージョンアップできたかと思います。あとは各プロジェクトが問題なく動作できるか確認をしましょう。以下wikiでもまとめてます。

embulkのバージョンアップ


■digdag runする前に

そのまま以下のように digdag run するとv0.8で実行する前にGemfileを修正します。まずは2行目のEmbulkのバージョンをv0.9.23に変更し、それ以外バージョン指定されていたので、全て最新のものを取得するように変更しました。その後 embulk bundle update を実行します。updateするとGemfile.lockが書き換わるのでgit addしておきましょう。その他embulkコマンドは以下wikiを参考にしてみてください。

  • embulk bundle update

embulkコマンドの使い方


■各エラー対応

  • embulk-input-mysql

Caused by: java.lang.RuntimeException: java.sql.SQLException: The server time zone value ‘Asia/Tokyo’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

MySQLからデータを取ってくる場合、上記のプラグインが必須になるのですが、v0.9になったことでMySQLのTime ZoneをUTCであると判断してしまい、9時間ずれた状態でTimeStamp型のデータを取得してしまうとのことです。なので以下のようなオプションをつけてあげましょう。

  • embulk-output-bigquery

Caused by: org.jruby.exceptions.RaiseException: (ArgumentError) unknown keyword: location

一度Gemfileからgoogle-api-clientを削除して embulk bundle update からの再度Gemfile追加してupdateすればエラーは消えます。

  • embulk-input-s3

org.embulk.exec.PartialExecutionException: java.lang.RuntimeException: java.lang.AbstractMethodError

そもそもバージョンアップをしたときにv0.9.9だったのでv0.9.23にすればこのエラーはそもそも出ません(これは恥ずかしい!!)

それ以外はエラー出ていませんでしたが、前のバージョンと新バージョンでBigQueryに専用のテーブルを作って相違確認するとさらにベストです!値が違うとかあったら冷や汗。。


■まとめ

なかなか相当古いバージョンからバージョンアップを行いましたが、@hiroysatoさんフォローありがとうございました!!とりあえずステージング環境は動作確認OKなので来月本番適用してまた何かあれば追記していきます!あとRubyもバージョンアップしないと…

LINEで送る
Pocket

カテゴリー: embulk

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください