我正在使用一个函数在数据帧上生成列CIndex,就像从0开始的索引。它接受df作为参数并返回添加了列的df。
df1 = spark.read.json('/home/test/abc.json')
x_column(df1)
场景1: 当我通过此df时:
df2 = spark.sql("select some column 1, some column 2 from abc left outer join xyz ON <join condition> where some<where clause>")
x_column(df2)
从x_column返回的上述操作在不到一秒钟的时间内完成(在正常的4G Windows Spark设置下,到目前为止对我来说还不错)。 read.json立即完成。
方案2: 当我通过df时:
Pyspark 3.7
Spark 2.2
此返回带有额外CIndex列的df的操作大约需要3到7分钟,这完全是无法预期的。 df2会立即生成。但是create_join_column(df2)需要3-7分钟来处理。已针对每一行添加了日志语句。
为什么会有这种不同的行为?
a = np.dot(abs(var1),abs(var2),'full')