我目前正在尝试将两个dataframe连接在一起,但在其中一个dataframe中保留相同的顺序。
哪些操作保持RDD顺序?,似乎(纠正我,如果这是不准确的,因为我是Spark的新手)连接不保持顺序,因为行被连接/"到达"最终数据帧,而不是按照指定的顺序,由于数据在不同的分区。
如何在保持一个表的顺序的同时执行两个dataframe的连接?
。
+------------+---------+
| col1 | col2 |
+------------+---------+
| 0 | a |
| 1 | b |
+------------+---------+
与
连接 +------------+---------+
| col2 | col3 |
+------------+---------+
| b | x |
| a | y |
+------------+---------+
on col2应该给
+------------+--------------------+
| col1 | col2 | col 3 |
+------------+---------+----------+
| 0 | a | y |
| 1 | b | x |
+------------+---------+----------+
我听说过一些关于使用coalesce
或repartition
的事情,但我不确定。如有任何建议/方法/见解,欢迎提出。
Edit:这是否类似于在MapReduce中有一个reducer ?如果是这样,在Spark中会是什么样子?
不能。您可以添加monotonically_increasing_id
,并在连接后重新排序数据