spark列:在使用数学函数或spark表达式时如何处理空值( java 语)

x8diyxa7  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(239)

我正在尝试对多个列值执行一些数学函数,并在同一Dataframe中创建一个新列。例如

id | name | Quantity | price
_______________________________
1  | Luke | 10 | 5

应该变成

iid | name | Quantity | price | derivedCol
_______________________________
1  | Luke | 10 | 5 | 50

所以spark表达式是:derivedcol=(数量*价格)。
我在循环中执行它,这样就可以创建多个列。
现在我面临的问题是执行时如果column的值为null,那么程序抛出nullpointeexception并停止。如果所有的值都存在,没有任何空值,那么程序运行平稳。计算是在运行时进行的,我找不到检查列的空值的选项。我不想筛选空值行。

if(null != derivedColNxtObj) {
 switch (operatorStr) {
    case "+":
        derivedCol = derivedCol.plus(derivedColNxtObj);
        break;
    case "-":
        derivedCol = derivedCol.minus(derivedColNxtObj);
        break;
    case "*":
        derivedCol = derivedCol.multiply(derivedColNxtObj);
        break;
    case "/":
        derivedCol = derivedCol.divide(derivedColNxtObj);
        break;
            }
        }
    }

    df = df.withColumn(fieldname, derivedCol);

那么,如何忽略空值并顺利执行表达式呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题