我有一个要映射的数据集。计算的值取决于上一行的值。所以我需要保存。但是我无法做到的是将计算出的布尔值写回到数据库中。该“信息”有一个空白字段。
下面的代码正在“工作”,因为它返回了正确的布尔值。但是我很可能想只在信息字段中设置isHigher返回Row。
更新: 经过修补之后,我设法将包含数据的行发送回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;
}
});