相同的功能对于具有相同列的不同数据帧花费不同的时间

时间:2019-11-27 13:25:04

标签: pyspark pyspark-sql pyspark-dataframes

我正在使用一个函数在数据帧上生成列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')

0 个答案:

没有答案