2

Я новичок в искрах/scala.Модифицированная структура RDD в искры

val First: RDD[((Short, String), (Int, Double, Int))] 

Это структура RDD. Я хочу, чтобы модифицировать этот sturcture что-то вроде ниже:

val First: RDD[(Short, String , Int, Double, Int)] 

Потому что я, имеющий другую RDD с различной структурой, и я хочу, чтобы UNION как это RDD. (Структура должна быть такой же в работе UNION).

Пожалуйста, предложите мне вариант.

+0

Нет sweat: 'First.map {case ((x, y), (z, w)) => (x, y, z, w)}' – Alec

+0

@Alec Я пробовал это, но поскольку количество данных так что это замедлит работу. Поскольку Map будет перебирать данные по одному. – Darshan

+0

Пожалуйста, предложите мне какое-нибудь решение, где я могу изменить структуру без повторения данных. – Darshan

ответ

1

Просто карта данных, как это:

First.map{ case ((x, y), (k, z, w)) => (x, y, k, z, w) } 

и для того, чтобы написать эту функцию карты, вы должны проверить формат вашего РДУ, ((Short, String), (Int, Double, Int)), который является тем, что я написал, как (x, y), (k, z, w), а затем напишите нужный формат в правой части =>.


Edit для комментария:

Как Карта будет перебирать данных один на один

применяет преобразование только тогда, когда происходит действие, так map() работает очень хорошо, в распределенный способ. Каждый раздел будет применять функцию отображения в своих данных.

Это не очень дорогостоящая операция, поэтому не сосредотачивайтесь на этом, сосредоточьтесь на своем соединении, что является тяжелой операцией. Функция карты должна быть чем-то дешевым, если у вас есть соответствующие ресурсы в вашем кластере, для вашего объема данных.

+0

Есть ли у вас другой вариант модифицированной структуры без итерации (поскольку Map будет перебирать данные по одному) – Darshan