私はSparkの新機能で、ワーカーノードに渡す必要のあるSpringコンテキスト(ClassPathXmlApplicationContextを使用してアプリケーションコンテキストにXMLをロードする)を持っています。私はSparkのコンテキストを作成し、私のflatMapとnullで同じものを使用しようとしています。とにかくこれをFlatmap関数に渡すことができますか?私は、この春の文脈の必要性を喚起する別のフレームワークを呼びたいと思っています。ここでSpringコンテキストをSparkワーカーノードに渡す方法
は、私はそのヌルFlatMapFunction内でコンテキストを使用しようとしていますいくつかのコード
ApplicationContext context = new ClassPathXmlApplicationContext("spring/rules-engine-spring.xml");
JavaRDD<Row> partitions = r.mapPartitions(
new FlatMapFunction<Iterator<Row>, Row>() {
public Iterable<Row> call(Iterator<Row> rowIterator) throws Exception {
List<Data> factList = new ArrayList<Data>();
while (rowIterator.hasNext()) {
Row rw = rowIterator.next();
Data fact = new Data();
fact.setGrain(rw.getString(0));
fact.setRoute(rw.getString(1));
factList.add(fact);
}
Iterable itr = new Iterable() {
List l = new ArrayList<Integer>();
public Iterator iterator() {
return l.iterator();
}
};
return itr;
}
});
List result=partitions.collect();
です。このメソッドの外部には、コンテキストに値があります。どんな助けもありがとう。
例外はありますか?フラットマップ内でコンテキストを作成してみることができますか? – Reactormonk
私が言及したように、私は文脈を2回以上作成することはできません。それはFlatMapの外になければなりません。関数内でコンテキストを作成しようとしましたが、コンテキストオブジェクトのいくつかがすでに存在していたというエラーが出ました。フラットマップ関数の外側にコンテキストを作成して関数にアクセスする方法はありますか? –
オブジェクトがflatMapの外側でヌルでないことは確かですか?それが内部でnullの場合、おそらくシリアル化ロジックが正しくフェッチしていない可能性があります。それとも何とか一時的なものとしてマークされています。 – Reactormonk