私は例えば、スパークのすべての執行上の私の機能に非serialisableサードパーティのクラスを使用する必要があります。スパーク - 静的オブジェクトを持っているための正しい方法は、すべての労働者にどのようなものです
JavaRDD<String> resRdd = origRdd
.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterable<String> call(String t) throws Exception {
//A DynamoDB mapper I don't want to initialise every time
DynamoDBMapper mapper = new DynamoDBMapper(new AmazonDynamoDBClient(credentials));
Set<String> userFav = mapper.load(userDataDocument.class, userId).getFav();
return userFav;
}
});
私はすべてのエグゼキュータのために一度初期化し、それを何度も何度も使用することができる静的なDynamoDBMapper mapper
を持っていたいと思います。
シリアル対応ではないので、ドライブで一度初期化してブロードキャストすることはできません。
注:これはここ(What is the right way to have a static object on all workers)の回答ですが、Scalaの場合のみです。
DynamoDBMapperがスレッドセーフである場合は、Javaシングルトンクラスを作成することができます。 – zsxwing