Преобразовать набор данных scala в конкретный формат RDD - PullRequest
0 голосов
/ 01 марта 2019

У меня есть кадр данных, который выглядит следующим образом:

+--------------------+-----------------+
|     recommendations|relevant_products|
+--------------------+-----------------+
|[12949, 12949, 71...|           [4343]|
|[12949, 12949, 71...|           [1589]|
|[12949, 12949, 71...|          [11497]|

evaluation_ds:org.apache.spark.sql.Dataset[docCompare] = [recommendations: array, relevant_products: array]

Это класс, используемый в наборе данных: case class docCompare (recommendations: Array[Int], relevant_products: Array[Int])

Как можноЯ конвертирую его в JavaRDD в следующем формате:

 org.apache.spark.rdd.RDD[(Array[?], Array[?])]

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете просто применить rdd к набору данных, как показано ниже:

val evaluation_ds = Seq(
  (Seq(3446, 3843, 1809), Seq(1249)),
  (Seq(4557, 4954, 2920), Seq(2360))
).toDF("recommendations", "relevant_products").as[(Array[Int], Array[Int])]

import org.apache.spark.mllib.evaluation.RankingMetrics

val metrics = new RankingMetrics(evaluation_ds.rdd)
// metrics: org.apache.spark.mllib.evaluation.RankingMetrics[Int] = ...
...