Spark 优化编码
Spark optimized coding
我是 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']) )
总是建议使用第二个,这与 spark 的内部工作方式有关。谁能给我一个详细的原因吗?
如您所描述的那样,这两种“方式”之间没有区别,正如@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
是完全合法的,但您将丢失您以后可能需要的原始数据框。
我是 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']) )
总是建议使用第二个,这与 spark 的内部工作方式有关。谁能给我一个详细的原因吗?
如您所描述的那样,这两种“方式”之间没有区别,正如@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
是完全合法的,但您将丢失您以后可能需要的原始数据框。