![](/img/trans.png)
[英]Convert Array[(String,String)] type to RDD[(String,String)] type in spark
[英]Convert RDD[Array[(String,String)]] type to RDD[(String,String)] in scala
我是 Scala 的新手,並嘗試了多種方法將RDD[Array[(String,String)]]
類型轉換為RDD[(String,String)]
。
我想要實現的是 select 從 Json 兩個元素(文本和類別)。 對於文本中的每個單詞,我只想以 (word1, category), (word2, category), ... 的形式創建一個鍵/值對。
我的示例如下所示:
import org.json4s._
import org.json4s.jackson.JsonMethods._
// Example Json-line: {"reviewText": "This was a gift!", "category": "Apps"}"
val rdd = sc.textFile(PathToJSONFile)
rdd.map{
row =>
val json_row = parse(row)
val myCategory = compact(json_row \ "category").toString
val myText = compact(json_row \ "reviewText").toString.toLowerCase.split("[#&$!]").map(_.trim).filter(_.length > 1)
myText.map{word => (word, myCategory)}
}
output 是org.apache.spark.rdd.RDD[Array[(String, String)]]
看起來像這樣:
Array(Array((this,"Apps"), (was,"Apps"), (a,"Apps"), (gift,"Apps"))
但是我想要實現的是RDD[(String,String)]
形式的鍵值對(其中鍵是一個單詞,並且該行中每個單詞的值都是相同的類別)
我怎樣才能做到這一點? 非常感謝!
Psidom 的建議解決了這個問題。 將rdd.map to rdd.flatMap
是解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.