Pyspark数据框将列表添加为列

时间:2017-11-02 12:07:34

标签: python pyspark

我有一个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|
+--------------------+-----------+

0 个答案:

没有答案