我正在尝试对多个列值执行一些数学函数,并在同一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);
那么,如何忽略空值并顺利执行表达式呢?
暂无答案!
目前还没有任何答案,快来回答吧!