方法があります。しかし、AnalyticsModel
オブジェクトが少ない(これはあなたが以下の解決策であなたの人生を複雑にする必要はありません)。 AnalyticsModel
オブジェクトの膨大な数を作成する場合は、以下の解決策を検討してください。
このクラスは、コールごとに1つのAnalyticsModel
インスタンスを生成します。コードの下
public class AnalyticsModelGenerator implements FlatMapFunction<String, AnalyticsModel> {
private final Long endDate;
private final Calendar cal;
public AnalyticsModelGenerator(Calendar cal, Long endDate) {
this.cal = cal;
this.endDate = endDate;
}
@Override
public Iterable<AnalyticsModel> call(String dummyInput) throws Exception {
return new Iterable<AnalyticsModel>() {
@Override
public Iterator<AnalyticsModel> iterator() {
return new AMIterator(cal, endDate);
}
}
}
private class AMIterator implements Iterator<AnalyticsModel> {
private final Long endDate;
private final Calendar cal;
public AMIterator(Calendar cal, Long endDate) {
this.cal = cal;
this.endDate = endDate;
}
@Override
public boolean hasNext() {
return (cal.getTimeInMillis() <= endDate);
}
@Override
public AnalyticsModel next() {
return new AnalyticsModel(time, columnName, aggrResult);
}
}
}
AnalyticsModel
オブジェクトのRDDを作成します。
JavaRDD<String> initJavaRDD = jSparkContext.parallelize(new ArrayList<String>(){{add("dummyInput");}});
JavaRDD<AnalyticsModel> amJavaRDD = initJavaRDD.flatMap(new AnalyticsModelGenerator(cal, endDate));
そのが、これは良い方法であるだけで、 'KYROのserializer'とジョブは申し訳ありませんが、私 –