我有一个包含数百万条记录的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的所有行。
暂无答案!
目前还没有任何答案,快来回答吧!