2016-08-23 10 views

回答

0

如果RDD的類型是RDD[(String, Iterable[String])],映射其記錄你需要一個函數接收參數與同類型的RDD的記錄,即:如果你想知道

def getStr(record: (String, Iterable[String])): String = { "test" } 

什麼可以用Iterable完成 - 參見docs

有時,最簡單的方法(儘管不一定是最好的方法)是將其轉換爲列表,然後獲得更豐富的API。獲得迭代器的第一個項目,或默認,如果它是空的:

def getStr(record: (String, Iterable[String])): String = record match { 
    case (s, iter) => iter.toList.headOption.getOrElse("UNKNOWN") 
} 
+0

我們怎麼會知道,如果OP需要使用'toList'的迭代,如果我們不知道他想要做什麼它?我的意思是,如果'Iterable [String]'很大,我們有一個不必要的O(n)操作,也許無緣無故。 –

+1

全部都是真的 - 我假設OP主要關注'getStr'的簽名,其餘僅僅是一個實現的_example_,以查看如何使用這樣的簽名,包括性能免責聲明......我承認'但是,toList'可能是一個危險的提示。 –

+0

感謝您的回覆,我如何訪問記錄[String]並在getStr函數中記錄[Iterable] –

相關問題