2016-09-25 5 views
0

Глядя, чтобы сравнить поле по полю rdds по ключу и пытаться заполнить поля непревзойденного массива, но не использовать для цикла.Запуск цикла в искр Scala

ниже код, в котором цикл комментируется работает на 1-й полевой проверки, но я хотел бы использовать цикл для покрытия Все поля Сравнение

Любая идея, как сделать это для цикла работы, так что все поля а, b, которые не равны, могут быть заполнены?

---a is of String type 
---b is of Array[String] type 
---c is of Array[String] type 

var i=0 
val joinedrdd = rdds1.join(rdds2) 
val res= joinedrdd.map { 
    case (a, (b, c)) => (
    //for (i <- 0 until (b.length - 1)){ 
     if (b(i).toString != c(i).toString) 
     {(a, b(i), c(i))} 
    //} 
    ) 
} 
+0

Каковы критерии для заполнения этих значений? –

ответ

1

Там могут быть и другие более эффективные подходы я не знаю. Тем не менее, я бы zip и внутренние Array s, а затем map эти значения, чтобы найти, отличаются ли они, и если это так, замените возвращаемое значение, иначе верните значение.

jrdd.map { 
    case (id, (xs, ys)) => (id, xs.zip(ys).map { 
    case (x, y) if x == y => x // if x = y return x or y 
    case _ => "random" // if they differ then return random 
    }) 
} 

Вы можете увидеть/тест, что я сделал только here.

+0

спасибо Альберто, я искал почти то же, что и ваш образец кода. Но если есть способ, которым мы можем игнорировать или избегать заполнения элементов для случая _ => "random" ?? Мне просто нужны только те элементы, которые не равны и игнорируют все равные элементы. Заранее благодарим! – chaitupadi

+0

Покажите мне пример. Описание довольно неопределенное. –

+0

Ничего. Я исправился. Спасибо за ваше время и помощь здесь .. :) – chaitupadi

Смежные вопросы