私はjavaで書いたjarをロードするspark scalaプログラムを持っています。そのjarファイルから直列化オブジェクトを読み込もうとしたが、java.lang.ClassNotFoundException
がスローされた静的関数が呼び出されます。 sparkプログラムはローカルでは動作しますが、クラスタワーカーでは動作しません。ファイルから読み込もうとする前に、私はPattern
オブジェクトをインスタンス化していて問題はないので、特に奇妙です。sparkクラスタでプログラムを実行しているときにjava.lang.ClassNotFoundExceptionが発生しました
ファイルに書き込んだPattern
のオブジェクトは、私が読もうとしているオブジェクトのPattern
と同じであると確信しています。
スレーブマシンのjarファイルを確認しました。Pattern
クラスがあります。
問題が何であるか考えている人はいますか?必要に応じて詳細を追加できます。
これは私が次のようにS3からファイルを読んでいPatternクラス
public class Pattern implements Serializable {
private static final long serialVersionUID = 588249593084959064L;
public static enum RelationPatternType {NONE, LEFT, RIGHT, BOTH};
RelationPatternType type;
String entity;
String pattern;
List<Token> tokens;
Relation relation = null;
public Pattern(RelationPatternType type, String entity, List<Token> tokens, Relation relation) {
this.type = type;
this.entity = entity;
this.tokens = tokens;
this.relation = relation;
if (this.tokens != null)
this.pattern = StringUtils.join(" ", this.tokens.toString());
}
}
です:
AmazonS3 s3Client = new AmazonS3Client(credentials);
S3Object confidentPatternsObject = s3Client.getObject(new GetObjectRequest("xxx","confidentPatterns"));
objectData = confidentPatternsObject.getObjectContent();
ois = new ObjectInputStream(objectData);
confidentPatterns = (Map<Pattern, Tuple2<Integer, Integer>>) ois.readObject();
LE:私は、ランタイムおよびパスにクラスパスをチェックします瓶にはそこにいませんでした。私はエグゼクティブのために追加しましたが、私はまだ同じ問題を抱えています。 readObject関数を呼び出しているJarファイルの中にPatternクラスがあるので、私はそうは思わない。
クラスターの場合はクラスパスにクラスがありますか? –
パターンは自分のクラスの権利ですか? JDKのものではありませんか? –
それはクラスタ内で実行されている瓶の中にあるので、それにアクセスする必要があると推測します – Tomy