在python函数中使用时,PySpark代码非常慢

时间:2018-09-22 01:51:08

标签: python python-2.7 pyspark apache-spark-sql

我正在使用python函数来抽象功能,并将数据框作为适用的那些函数的参数传递,这会进行一些计算并返回新的/更新的数据框。

def calculate(df):
    df_new = df.select('col1', 'col2')
    df_new = df.withColumn('error', when(col(col1)!= col(col2), 1).otherwise(0))
    return df_new

def get_meta(df):
    df_meta = df.agg(sum('error').alias('error_count')).select('error_count')
    return df_meta

df = spark.read.csv('/path/to/csv')
df = df.select('col1','col2')
output_df = calculate(df)
df_meta = get_meta(output_df)

df_meta.show()

我面临的问题是,要花30,000条记录才能获得理想的结果需要花费太长时间。有时我最终会终止该过程。但是,当我不使用函数时,只需不到2分钟即可获得相同的输出。我不确定为什么当数据帧包含在函数中时,spark的行为会有所不同(显然,这不是我们正在谈论的UDF)。任何对此的见识都会有所帮助。

0 个答案:

没有答案