谢谢。
我遇到的这个有趣的例子展示了两种方法和更好的方法,并同意另一种答案。这是Scala,而不是pyspark,但同样的原则适用,尽管示例不同。
import org.apache.spark.sql.functions._
import spark.implicits._
val df = Seq(
("1","2", "3"),
("4", "5", "6"),
("100","101", "102")
).toDF("c1", "c2", "c3")
这是昂贵的,即withColumn,它为每次迭代创建一个新的DF:
val df2 = df.columns.foldLeft(df) { case (df, col) =>
df.withColumn(col, df(col).cast("int"))
}
//df2.show(false)
这样更快。
val df3 = df.select(df.columns.map { col =>
df(col).cast("int")
}: _*)
//df3.show(false)
Spark Dataframes有一个方法每次添加一个新列。若要添加多列,需要一个的链。这是做这件事的最佳实践吗? 第二部分,在和的链中使用有哪些权衡? 我在某个地方读到过,在Spark DFs中使用可用的方法总是比推出自己的实现要好。如果我的论点错了,请让我知道。谢谢!欢迎所有的想法。
我有下面的pyspark数据文件。
请为Pandas提供pyspark dataframe替代方案。 另外,我不需要,而是希望检查该列中的distinct值。
有两个,我想删除一个。我该怎么办?
我试图找出在Spark dataframe列中获得最大值的最佳方法。 考虑以下示例: 上面的每一个都给出了正确的答案,但在没有Spark分析工具的情况下,我无法判断哪一个是最好的。 就Spark运行时或资源使用而言,上述哪种方法最有效,或者是否有比上述方法更直接的方法,有任何来自直觉或经验主义的想法?
问题内容: 复制列表的最佳方法是什么?我知道以下方法,哪种更好?还是有另一种方法? 问题答案: 如果要浅拷贝(不复制元素),请使用: 如果要进行深层复制,请使用复制模块: