Cannot grow BufferHolder by size because the size after growing exceeds size limitation

今天用spark的时候碰到的问题,直接对一个大的dataframe做agg,导致buffer超了。
可以人为的在dataframe上append一个新的字段,根据字段先做一个agg,最后再agg,就不会超了

import random

def get_rand(i):
  return random.randint(1,10000)
randUdf = udf(get_rand,IntegerType())

getP = udf(get_placement, ArrayType(IntegerType()))

tmp_df.withColumn("salt_key",randUdf(col('placement_ids'))).groupby('salt_key').agg(getP(collect_list(struct('placement_ids'))).alias("ids")).show()

这样再agg一次,就没有问题啦

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。