Pyspark大数据问题-如何从另一个数据帧添加列(没有常见的联接列),大小可能不均衡



我正在寻找一种从一个pyspark数据帧添加列的方法,假设这是DF1:

column1
123
234
345

窗口函数row_numberntile的组合可能就是答案:

  1. 在DF1上应用row_number以获取枚举为新列id的所有记录

  2. 获取DF1中的记录数,并将其存储为df1_count

  3. 在DF2上应用ntile(df1_count)作为新列id。Ntile将把DF2行"拆分"为n个尽可能相等的组

  4. 在新生成的列id上加入DF1和DF2以组合两个数据帧

或者,代替ntile(n),DF2也可以获得基于row_number()的列id,然后可以用于计算mod:

df.withColumn("id_mod", col("id") % lit(df1_count))

然后使用CCD_ 13 将CCD_

最新更新