2016-06-28 63 views
4

我目前正在嘗試將兩個DataFrames連接在一起,但在其中一個Dataframe中保留相同的順序。數據框可以加入Spark保存順序嗎?

Which operations preserve RDD order?看起來(糾正我,如果這是不準確的,因爲我是新來的火花)連接不保留順序,因爲行加入/「到達」在最後的數據框不是在指定的順序,由於數據在不同的分區中。

如何在保留一個表的順序的同時執行兩個DataFrame的連接?

例如,

+------------+---------+ | col1 | col2 | +------------+---------+ | 0 | a | | 1 | b | +------------+---------+

+------------+---------+ | col2 | col3 | +------------+---------+ | b | x | | a | y | +------------+---------+

加入了COL2應該給

+------------+--------------------+ | col1 | col2 | col 3 | +------------+---------+----------+ | 0 | a | y | | 1 | b | x | +------------+---------+----------+

我聽說過使用​​3210或repartition的一些事情,但我不確定。任何建議/方法/見解表示讚賞。

編輯:這是否類似於在MapReduce中有一個reducer?如果是這樣,那麼Spark會如何?

+0

看到這個問題:http://stackoverflow.com/questions/32882529/how-to-zip-twoor-more-dataframe-in-spark –

+0

我不認爲zip會工作,因爲表2的行應該在保留順序的情況下連接到表1的行,而不是行1連同行1'等,並且類似地用於索引和連接的方法。 –

+0

我剛剛從上面的例子中注意到col2正在用於連接條件。那是你要的嗎? –

回答

1

它不能。您可以添加monotonically_increasing_id並在加入後重新排序數據。

相關問題