簡體   English   中英

根據SPARK scala中的條件處理RDD

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM