1. 程式人生 > >Spark DF:關於Row中的數值獲取問題

Spark DF:關於Row中的數值獲取問題

//json檔案
//{"page_id":"87","pay_category_ids":"99","pay_product_ids":"96","city_id":5}
//{"pay_category_ids":"74","city_id":0} 
val df = sparkSession.read.json("./src/data/test")
df.show()
df.rdd.foreach(row => {
    println("getAs: "+row.getAs[String]("page_id"))
    println("isNull: "+row.isNullAt(1))  //
    val tp = row.getAs[String]("page_id")
    println("==Null:",tp == null)
    println("getLong:", row.getString(1))
   })

突然想起之前專案中有些許問題未處理
今天研究一番
從row中get值時, 經常遇到空的問題
簡單總結如下:
get數值型別:如果為空, 則轉化為0
判空, 建議使用row.isNullAt(index)

get字串型別:如果為空則為null
判空建議用:StringUtils.isEmpty() (出現""的情況)

總結:獲取值用getAsT
判空用row.isNullAt
以及StringUtils.isEmpty()