如何在spark的dataframe中添加和更新列

vyswwuz2  于 2021-06-29  发布在  Hive
关注(0)|答案(0)|浏览(418)

我有一个包含数百万条记录的Dataframe,我想添加一个新列,并根据如下所示的某些条件在spark中使用scala进行更新:

uid       date  code
1   20-05-2016     a
1   21-05-2016     b
1   22-05-2016     c
2   21-05-2016     a
2   23-06-2016     c
2   24-06-2016     b
2   24-06-2016     c
2   25-06-2016     d

我想添加一个列来分配subid,这样每当代码到达某个uid的c时,该uid的subid就会增加1。因此,生成的Dataframe类似于:

uid       date  code  subid
1   20-05-2016     a      1
1   21-05-2016     b      1
1   22-05-2016     c      1
2   21-05-2016     a      1
2   23-06-2016     c      1
2   24-06-2016     b      2
2   24-06-2016     c      2
2   25-06-2016     d      3

i、 我们开始给每个uid赋值1,在同一个uid达到c之后,我们把subid加1,赋值2,依此类推。
现在,这里的挑战是:1)我需要确保唯一uid的每个子集不被划分为不同的节点,否则它可能会破坏逻辑,因此2)我了解到窗口函数中的帧规范在hive中不受支持,如图所示。
如何实现这一点的任何建议,同时确保我设法迎合Dataframe的容量,并确保在单个节点上处理唯一uid的所有行。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题