我目前正在尝试将两个DataFrame连接在一起,但在其中一个Dataframe中保留相同的顺序.
从哪些操作维护RDD订单?,似乎(纠正我,如果这是不准确的,因为我是Spark的新手)加入不保留顺序,因为行由于数据在不同的分区中而未按指定的顺序加入/"到达"最终的数据帧.
如何在保留一个表的顺序的同时执行两个DataFrame的连接?
例如,
+------------+---------+
| col1 | col2 |
+------------+---------+
| 0 | a |
| 1 | b |
+------------+---------+
加入
+------------+---------+
| col2 | col3 |
+------------+---------+
| b | x |
| a | y |
+------------+---------+
在col2上应该给
+------------+--------------------+
| col1 | col2 | col 3 |
+------------+---------+----------+
| 0 | a | y |
| 1 | b | x |
+------------+---------+----------+
我听说过一些事情有关使用coalesce或repartition,但我不知道.任何建议/方法/见解表示赞赏.
编辑:这类似于MapReduce中有一个reducer吗?如果是这样,那在Spark中会是什么样子?
在连接两个数据帧之后,我发现列顺序已经改变了我认为的那样.
实施例:加入两个数据帧的列[b,c,d,e]和[a,b]上b产量的列顺序[b,a,c,d,e].
如何更改列的顺序(例如[a,b,c,d,e])?我已经找到了在Python/R中实现它的方法,但不是Scala或Java.是否有任何方法允许交换或重新排序dataframe列?