[英]Scala, RDD Array[string] concatenation
有什么方法可以連接三個RDD數組[字符串]? 我是Scala的新手,我仍在學習新技術。
我有三個RDD Array [string]看起來像這樣:
RDD1 = ['string1', 'string2', 'string3']
RDD2 = ['stringa', 'stringb', 'stringc']
RDD3 = ['stringA', 'stringB', 'stringC']
但是訣竅是,我需要在第一行中添加第一列。 因此,在連接之后,它應該如下所示:
RDD = ['string1', 'stringa', 'stringA'
'string2', 'stringb', 'stringB'
'string3', 'stringc', 'stringC']
如果我使用.union
那只會給我這個:
['string1', 'string2', 'string3'
'stringa', 'stringb', 'stringc',
'stringA', 'stringB', 'stringC']
有沒有辦法實現這個目標?
在常規scala中,您可以使用transpose
,例如:
Array(r1, r2, r3).transpose.flatten
我對Spark不太熟悉,但是我不相信transpose
是可用的。 如果你知道你只需要一個3x3,你可以得到相同的結果:
r1 zip r2 zip r3 flatMap {case ((a, b), c) => Array(a,b,c)}
如果你需要推廣到任何nxn
,那就需要一個遞歸算法。
所以你想要三個rdds的第一行在一起。 您可以通過先執行“ zipwithindex”並根據三個rdds的索引進行連接來輕松實現此目的。 我假設你希望它們在同一記錄中,因為rdd沒有對它們的排序感。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.