Запись в поле набора данных при отображении в Spark - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть набор данных, который я отображаю. Вычисленное значение зависит от значения в предыдущей строке. Поэтому мне нужно сохранить это. Но я не могу записать вычисленное логическое значение обратно в базу данных. Для этой «информации» есть пустое поле.

Код ниже «работает», так как возвращает правильное логическое значение. Но я бы хотел вернуть строку обратно только с установленным 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;
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...