【发布时间】:2018-06-04 09:50:46
【问题描述】:
我正在使用 pyspark 2.0。
我的代码是:
for col in to_exclude:
df = df.drop(col)
我不能直接df = df.drop(*to_exclude) 因为在 2.0 中,drop 方法一次只接受 1 列。
有没有办法更改我的代码并删除 for 循环?
【问题讨论】:
标签: python apache-spark pyspark
我正在使用 pyspark 2.0。
我的代码是:
for col in to_exclude:
df = df.drop(col)
我不能直接df = df.drop(*to_exclude) 因为在 2.0 中,drop 方法一次只接受 1 列。
有没有办法更改我的代码并删除 for 循环?
【问题讨论】:
标签: python apache-spark pyspark
首先 - 不用担心。即使您在循环中执行此操作,也并不意味着 Spark 会为每个 drop 执行单独的查询。查询是懒惰的,所以它会先建立一个大的执行计划,然后一次执行所有的事情。 (但无论如何你可能都知道)
但是,如果您仍想摆脱 2.0 API 中的循环,我会采用与您实现的相反的方法:与其删除列,不如只选择需要的:
df.select([col for col in df.columns if col not in to_exclude])
【讨论】: