2016-11-05 6 views
1

私はSparkフレームワークを使用してHadoopで画像を検出するためにOpenCVライブラリを使用しています。 ローカルファイルシステムにHaarファイルが存在するローカルモードでsparkプログラムを実行できます。 しかし、Haarファイルを分散モードで読み込むとnullポインタエラーが発生します。すべてのクラスタノードにhaarファイルをコピーして、コードに絶対パスを指定しましたが、hadoopで配信モードでhaarカスケードを読み取る

String fileloc ="/home/centos/haarcascade_frontalface_alt.xml" 
    CascadeClassifier faceDetector = new CascadeClassifier(fileloc); 

Error: 
    Caused by: java.lang.NullPointerException 
     at javax.xml.bind.DatatypeConverterImpl.guessLength(DatatypeConverterImpl.java:658) 
     at javax.xml.bind.DatatypeConverterImpl._parseBase64Binary(DatatypeConverterImpl.java:696) 
     at javax.xml.bind.DatatypeConverterImpl.parseBase64Binary(DatatypeConverterImpl.java:438) 
     at javax.xml.bind.DatatypeConverter.parseBase64Binary(DatatypeConverter.java:342) 
     at com.lb.customlogic.impl.CustomLogicImpl.process(CustomLogicImpl.java:82) 
     ... 20 more 

私は接頭辞の拡張子のファイルを試してみました://、ファイル:/およびファイル:///しかしそれらは私のために働いていません。 プログラムの実行中にファイルを読み込むために、プレフィックスに何か追加する必要がありますか? OpencvはHadoopをサポートしていないので、私はhaarファイルのHDFS共有ロケーションパスを提供できないと思います。

+0

私はspark-submitで--filesを使用してエグゼキュータでhaarファイルを読むことはできますか?私は--filesオプションの理論的な定義をチェックしましたが、その実装についてはわかりません – Saurabh

答えて

0

この問題は、spark-submitで--filesパラメータを追加した後に解決されます。 haarファイルはすべてのノードに分散されています。

String fileloc ="haarcascade_frontalface_alt.xml" 
CascadeClassifier faceDetector = new CascadeClassifier(fileloc); 
関連する問題