ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Embulk xlsxファイルプレビューの注意

2017-01-27 23:55:06 | PG(分散処理)

Embulkembulk-parser-poi_excelプラグイン)で新しくxlsxファイルを読み込もうとしたら、例外が発生
エラーメッセージがEOFExceptionでend of ZLIB input streamとのことだったので、最初はxlsxファイルが大きすぎたのかと思った。

で、別途Apache POIのサンプルを作ってそのxlsxファイルを読み込んでみたら例外が発生した。
inflate ratio(圧縮率?)のチェックに引っかかったらしい。
ただ、これをチェックする閾値は設定できるので、問題解決!

と思ったのだが、よく見るとエラーメッセージが全然違う(汗)

WorkbookFactory.createメソッドでxlsxファイルを読み込むのだが、引数がFileのメソッドとInputStreamのメソッドでは挙動が違うらしい…。
Embulkのxlsxファイルを読み込むプラグインではInputStreamを使う方式なのだが、ratioのエラーになるのはFileを使う方式だけで、InputStreamを使う方式だとエラーにならなかった。
Embulkでも、previewだとエラーになるが、同じファイルをrunで読み込むとエラーにならない。

ということは、EmbulkとPOIの相性の問題と思われる。
プレビューだから、ファイルの全データを読み込んでいないのではないかと思う。
しかしxlsxファイルはzip圧縮されている形式なので、先頭データだけでは解凍できない^^;

まぁプレビューだけの問題だから、注意喚起だけでいいかな~。

(追記)他のプラグインでも同様の問題が起きているらしい。previewだと32kBしか読まないそうで。
previewでも全データを読むように修正されるなら、この問題も解決しそう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする