根据pysparkDataframe的两列添加唯一标识符

ntjbwcob  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(260)

我想将唯一标识符作为列添加到Dataframe中,其中唯一id考虑:
如果 from 列已分配uid,如果 relationship 列已经分配了唯一的id
例如:

+-------+-------+------------+
|   from|     to|relationship|
+-------+-------+------------+
|   alfa|  bravo|      cousin|
|charlie|  delta|      friend|
|   alfa|foxtrot|       enemy|
|   golf|  hotel|      friend|
|  india| juliet|      spouse|
|   echo|foxtrot|      cousin|
|   golf|  delta|       enemy|
+-------+-------+------------+

会导致:

+-------+-------+------------+---------+
|   from|     to|relationship|unique_id|
+-------+-------+------------+---------+
|   alfa|  bravo|      cousin|        1|
|charlie|  delta|      friend|        2|
|   alfa|foxtrot|       enemy|        1|
|   golf|  hotel|      friend|        2|
|  india| juliet|      spouse|        3|
|   echo|foxtrot|      cousin|        1|
|   golf|  delta|       enemy|        1|
+-------+-------+------------+---------+

从这个例子中,任何 from 具有alfa的值现在的uid为1,并且 relationship 堂兄的值的uid为1
因此,在第三排 relationship “敌人”的uid也为1,因此最后一行也显示了uid为1。
所以其他行有 from “alfa”、“echo”或“golf”的值的uid为1,和/或如果任何关系显示为“cosing”或“敌军”,则uid也为1。
另外,如果下一行是[“golf”,“lima”,partnerse“,1](由于看到了golf,uid将是1),那么之前看到的带有partnerse的行必须更新为uid 1。
有没有办法利用Pypark做到这一点?我在python中使用for循环完成了这项工作,但是当数据集有数十亿行时,它不会伸缩,所以我尝试使用spark集群

暂无答案!

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

相关问题