[英]process RDD based on condition in SPARK scala
我正在提取可能包含空值的csv文件列。 那么,在調用toInt之前,我需要先將這些空值轉換為0?
val field= sc.textFile("test.txt").map(_.split(",")(8))
我將如何實現這一目標?
樣本數據如下:
3070811,1963,1096,,"US","CA",,1,
3022811,1963,1096,,"US","CA",,1,56
3033811,1963,1096,,"US","CA",,1,23
需要傳遞-1才能拆分,因此它包含空列。
val field= sc.textFile("test.txt").map{
val x = _.split(",",-1)(8)
if (x.isEmpty) 0 else x.toInt
}
我只是讓toInt轉換“安全”,如下所示:
def safeToInt(s:String) = Try(s.toInt).getOrElse(0)
val field= sc.textFile("test.txt").map(entry => safeToInt(entry.split(",",-1)(8)))
你也可以過濾掉這些行,這樣0值就不會改變你的統計數據
val field= sc.textFile("test.txt").map{
val x = _.split(",",-1)(8)
}.filter{!_.isEmpty}.map{_.toInt}
這將改變您的字段RDD的大小,這可能是您想要的,也可能不是
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.