Как вернуть пары ключей и значений из нескольких столбцов в Scala с помощью Spark - PullRequest
0 голосов
/ 29 мая 2018

Я хочу преобразовать приведенный ниже RDD в пары значений ключа, причем каждый ключ имеет два значения.Первый столбец должен быть ключом, а второй и третий столбец должны быть значениями.Как я могу использовать класс Case в scala для выполнения преобразования?

scala> input
res31: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = MapPartitionsRDD[60] at rdd at <console>:35

scala> input.take(5).foreach(println)
[Ace,Ball,null]
[Kids,Kids,null]
[Hardware,Hardware,null]
[Market,Market,Markets]
[Adventure,Adventure,null]

Ожидаемое О / П: Я ожидаю пары ключ-значение, очень похожие на словарь Python.Один ключ будет содержать несколько значений, следовательно, значения будут кортежем.Как только мы получим пары ключ-значение, основываясь на ключе, я смогу извлечь значения.

Например,

d = {key1: [val1, val2, val3....], key2: [valx, valy, valz, ...], ....}

d[key1][0] дает первое значение ключа1

* 1011.* Надеюсь, что смогу четко изложить свои требования

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете использовать Tuple2.Предполагая, что вы хотите иметь вывод:

(Ace, (Ball, null))
(Kids, (Kids, null))
..
(Adventure, (Adventure, null))

Вы можете попробовать следующее:

val output = input.map(x => Tuple2(x.getString(0), (x.getString(1), x.getString(2))))
output.take(5).foreach(println)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...