Spark优化编码



我是pyspark的新手。通过以下方式编写代码:

1st way:
s_df= s_df.withColumn('sum', s_df['Col1'] + s_df['Col2'] )
s_df= s_df.withColumn('difference', s_df['Col1'] - s_df['Col2'] )
2nd way:
s_df= ( s_df.withColumn('sum', s_df['Col1'] + s_df['Col2'])
.withColumn('difference', s_df['Col1'] - s_df['Col2']) )

使用第二个总是可取的,这与火花内部的工作方式有关。谁能给我一个详细的原因吗?

这两个";"方式";正如@mck所指出的,正如您所描述的,s_df.explain()在两种情况下都是相同的。

我不认为有一个官员或";可取的";编写代码的方法,因为Spark在其文档中并没有提供任何样式指南。然而,我发现用这种方式写它更容易(更可读、更可维护(

s_df = (s_df
.withColumn('sum', s_df['Col1'] + s_df['Col2'])
.withColumn('difference', s_df['Col1'] - s_df['Col2'])
)

此外,值得一提的是,尽管覆盖s_df是完全合法的,但您会丢失原始数据帧,以后可能需要它。

最新更新