簡體   English   中英

在 scala 中將 RDD[Array[(String,String)]] 類型轉換為 RDD[(String,String)]

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

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