私は、HadoopのMapReduceフレームワークとXuggleを統合したプログラムを開発中です。そのためには、メモリ内のHadoopデータオブジェクトを読み書きするクラスIURLProtocolHandlerFactory
を実装しています。Xuggleでメモリ内の入力を開くことができません
あなたはここに関連するコードを見ることができます: アイデアは、それがIURLProtocolHandler
返すファイルを開くとき、私は後でその名前を参照するときようにUUIDでIURLProtocolHandlerFactory
クラスの各BytesWritable
オブジェクトを登録することですhttps://gist.github.com/4191668
そのインスタンスに添付されている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
次はどこに行くべきか、私はどのようにデバッグを続けなければならないのでしょうか?私の実装に欠陥があるかもしれませんが、私はそれを見ることができません。
を作成してみてください。私自身のIURLProtocolHandlerFactoryを読んだり書いたりするのはとても素敵でクリーンなアイデアだと思っていました。私は自分の入力用にDataInputを実装し、まだ私用のIURLProtocolHandlerFactoryを使用しているのを見ましたが、私は秘密に、きれいで素敵な状態を保つことができると期待していました。それはとにかくこのインタフェースのポイントですか?動作する実装はどのように見えますか? – gphilip