私はHadoopのMapReduceフレームワークをXuggleと統合するプログラムに取り組んでいます。そのために、IURLProtocolHandlerFactory
メモリ内のHadoopデータオブジェクトとの間で読み取りと書き込みを行うクラスを実装しています。
ここで関連するコードを見ることができます: https ://gist.github.com/4191668
クラス内の各BytesWritable
オブジェクトをIURLProtocolHandlerFactory
UUIDに登録して、後でファイルを開いているときにその名前を参照すると、IURLProtocolHandler
そのオブジェクトにアタッチされているインスタンスが返さBytesWritable
れ、メモリとの間で読み取りと書き込みができるようにするという考え方です。
問題は、次のような例外が発生することです。
java.lang.RuntimeException: could not open: byteswritable:d68ce8fa-c56d-4ff5-bade-a4cfb3f666fe
at com.xuggle.mediatool.MediaReader.open(MediaReader.java:637)
(投稿されたリンクの下も参照してください)
デバッグすると、オブジェクトがファクトリで正しく検出され、さらに、プロトコルハンドラで読み取られていることがわかります。出力ファイルから/へリスナーを削除すると、同じことが起こるので、問題はすでに入力にあります。Xuggleのコードを深く掘り下げると、JNIコード(ファイルを開こうとします)に到達しますが、これ以上進むことはできません。これは明らかにエラーコードを返します。
XugglerJNI.IContainer_open__SWIG_0
次にどこに行くべきか、どのようにデバッグを続けるべきかについて、いくつかのヒントを本当にいただければ幸いです。たぶん私の実装には欠陥がありますが、私はそれを見ることができません。