Преобразовать тип RDD [Array [(String, String)]] в RDD [(String, String)] в scala - PullRequest
0 голосов
/ 02 мая 2020

Я новичок в 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)] (где ключ - это слово и значение - это одна и та же категория для каждого слова в этой строке)

Как этого добиться? Большое спасибо!

1 Ответ

0 голосов
/ 02 мая 2020

Предложения от Psidom решили проблему. Изменение rdd.map to rdd.flatMap было решением.

...