Я новичок в Scala и попробовал несколько вещей, чтобы преобразовать тип RDD[Array[(String,String)]]
в RDD[(String,String)]
.
Что я хочу достичь, это выбрать из Json два элемента (текст и категория). Для каждого слова в тексте я просто хочу создать пару ключ / значение в форме (слово1, категория), (слово2, категория), ....
Мой пример выглядит так:
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)}
}
Выходные данные org.apache.spark.rdd.RDD[Array[(String, String)]]
выглядят так:
Array(Array((this,"Apps"), (was,"Apps"), (a,"Apps"), (gift,"Apps"))
Но я хочу достичь пары ключ-значение в форме RDD[(String,String)]
(где ключ - это слово и значение - это одна и та же категория для каждого слова в этой строке)
Как этого добиться? Большое спасибо!