如何解决Spark / Pyspark Dataframe的效率多次连接
我有一个DataFrame A,我需要使用A中的serval列来生成一个新功能,然后将其重新连接到A。如果以此方式生成多个功能,则这一次Dataframe.join的成本增加了。就像:
for i in range(10):
starttime = time.time()
A = A.join(some_pd_udf(A.select(...)))
costtime = time.time() - startttime
成本时间是指数增长。我知道spark是懒惰的,并且尚未触发数据的实际计算。
但是,如果我使用DataFrame.withColumn添加新列,这种现象就消失了。就像:
for i in range(10):
A = A.with(some_pd_udf(A.select(...)))
starttime = time.time()
A = A.with(some_pd_udf(A.select(...)))
costtime = time.time() - startttime
在这种情况下,成本时间很小。但是有时,我必须使用join来添加新列。
任何人都可以解释其背后的原因以及如何解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。