在Spark中映射时写入数据集字段

我有一个要映射的数据集。计算的值取决于上一行的值。所以我需要保存。但是我无法做到的是将计算出的布尔值写回到数据库中。该“信息”有一个空白字段。

下面的代码正在“工作”,因为它返回了正确的布尔值。但是我很可能想只在信息字段中设置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;
            }
        });
weiqchen 回答:在Spark中映射时写入数据集字段

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3129607.html

大家都在问