由於我要疊加rdd某列的數據,如果加數中出現nan,結果也需要是nan,nan可以做到,但我要處理的數據源中的nan是以null的形式出現的,null不能疊加,而且我也不能刪掉含null的行,於是我用了sparksql 的 ISNULL和CASE WHEN方法:
Case When 方法:
如果obs_PRE_1h列有值則不變,沒有則變為nan,注意這里的nan需要寫成 float(‘NaN’)
SELECT (CASE WHEN ISNULL(obs_PRE_1h)=true THEN float('NaN') ELSE obs_PRE_1h END) as obs,(CASE WHEN ISNULL(fcst_PRE_1h)=true THEN float('NaN') ELSE fcst_PRE_1h END) as fcst FROM parquetFile
源dataframe是這樣的:
結果: