У меня есть набор данных, который я отображаю. Вычисленное значение зависит от значения в предыдущей строке. Поэтому мне нужно сохранить это. Но я не могу записать вычисленное логическое значение обратно в базу данных. Для этой «информации» есть пустое поле.
Код ниже «работает», так как возвращает правильное логическое значение. Но я бы хотел вернуть строку обратно только с установленным isHigher в информационном поле.
Обновление: после сомнений мне удалось отправить обратно строку с данными в RDD. Однако кажется, что данные не сортируются, когда я делаю сопоставление. Но отображение напрямую зависит от сортировки по возрастанию.
JavaRDD rdd = dataset.orderBy("date").javaRDD();
JavaRDD rdd2 = rdd.map(new Function<Row, Row>() {
@Override
public Row call(Row row) throws Exception {
double tmpPrevious = previousClose;
boolean isHigher = ((BigDecimal)row.getAs("open")).doubleValue() > previousClose;
previousClose = ((BigDecimal)row.getAs("close")).doubleValue();
//how do I set the "info" field to isHigher (true or false)
Row r = RowFactory.create(row.getAs("start_trade_time").toString() ,isHigher,
((BigDecimal)row.getAs("open")).doubleValue(), tmpPrevious);
return r;
}
});
Старая версия
JavaRDD rdd = dataset.javaRDD();
JavaRDD<Boolean> rdd2 = rdd.map(new Function<Row, Row>() {
@Override
public Boolean call(Row row) throws Exception {
boolean isHigher = ((BigDecimal)row.getAs("open")).doubleValue() > previousClose;
previousClose = ((BigDecimal)row.getAs("close")).doubleValue();
//how do I set the "info" field to isHigher (true or false)
return isHigher;
}
});