我有一个python列表( p_list ),其中0和1的元素与spark数据帧一样多,只有一列(所有元素,如: 'imaj7felb438l6hk' ,....) .

我试图将此列表作为列添加到spark数据帧( df_cookie )中 . 但没有关键 . 到目前为止我试过:

1)将 df_cookie 转换为rdd,不起作用,因为它非常大而且内存不足

2)将 df_cookie 转换为pandas df,不起作用(原因与1相同))

3)将列表转换为新的数据帧,并使用 monotonically_increasing_id() 获取公共密钥并链接两者 . 这也不起作用,因为我最终在每个数据帧中使用不同的ID .

有什么建议?

test_list = [i for i in range(cookie.count())]
res = spark.createDataFrame(test_list, IntegerType()).toDF('ind')
df_res = res.withColumn('row', monotonically_increasing_id())
df_res.show(5)
+---+---+
|ind|row|
+---+---+
|  0|  0|
|  1|  1|
|  2|  2|
|  3|  3|
|  4|  4|
+---+---+

df_cookie = cookie.withColumn('row', monotonically_increasing_id())
df_cookie.show(5)
+--------------------+-----------+
|              cookie|        row|
+--------------------+-----------+
|    imaj7felb438l6hk|68719476736|
|hk3l641k5r1m2umv2...|68719476737|
|    ims1arqgxczr6rfm|68719476738|
|2t4rlplypc1ks1hnf...|68719476739|
|17gpx1x3j5eq03dpw...|68719476740|
+--------------------+-----------+

期望的输出:

+--------------------+-----------+
|              cookie|        ind|
+--------------------+-----------+
|    imaj7felb438l6hk|          0|
|hk3l641k5r1m2umv2...|          1|
|    ims1arqgxczr6rfm|          2|
|2t4rlplypc1ks1hnf...|          3|
|17gpx1x3j5eq03dpw...|          4|
+--------------------+-----------+