簡體   English   中英

Scala,RDD數組[字符串]連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM