2016-04-01 16 views
1

Üç RDD Dizisi [dizesi] birleştirebileceğim herhangi bir yol var mı? Scala’da yeniyim ve hala yeni bir teknik öğreniyorum. İlk satıra ilk sütunlar eklemek gerekir,Scala, RDD Dizi [dize] birleştirme

RDD1 = ['string1', 'string2', 'string3'] 
    RDD2 = ['stringa', 'stringb', 'stringc'] 
    RDD3 = ['stringA', 'stringB', 'stringC'] 

Ama hiledir:

Şöyle üç RDD Array [dize] var. Yani, birleştirme sonrasında, bu gibi görünmelidir:

RDD = ['string1', 'stringa', 'stringA' 
     'string2', 'stringb', 'stringB' 
     'string3', 'stringc', 'stringC'] 

i .union

kullanırsanız bana bu vereceğini: Bunu gerçekleştirmek için herhangi bir yol yoktur

['string1', 'string2', 'string3' 
'stringa', 'stringb', 'stringc', 
'stringA', 'stringB', 'stringC'] 

? Ben Spark ile çok aşina değilim

Array(r1, r2, r3).transpose.flatten 

ama transpose kullanılabilir inanmıyorum:

cevap

0

düzenli scala olarak, gibi transpose ile bunu yapabilir.

r1 zip r2 zip r3 flatMap {case ((a, b), c) => Array(a,b,c)} 

herhangi nxn için genelleme gerekiyorsa

, bu özyinelemeli algoritmayı gerektirecek şekilde oluyor: Eğer sadece bir 3x3 ihtiyaç biliyorsanız, aynı sonucu alabilirsiniz.

0

Böylece üç rdds'ın ilk satırının birlikte olmasını istiyorsunuz. İlk önce 'zipwithindex' yaparak bunu kolayca yapabilir ve rdds'inizin üçünüzü temel alarak katılabilirsiniz. Aynı kayıtta olmasını istediğinizi varsayıyorum, çünkü rdd'de sipariş verme duygusu yok.