如何在Spark中查找该过程的每个步骤的时间

时间:2017-09-16 00:40:24

标签: apache-spark logging pyspark explain

我使用PySpark中编写的以下函数来记录SQL表中的步骤。

def log_df_update(spark,IsComplete,Status,EndDate,ErrorMessage,RowCounts,StartDate,FilePath,tablename):
        import pandas as pd
        l = [(process_name_log.value,process_id_log.value,IsComplete,Status,StartDate,EndDate,ErrorMessage,int(RowCounts),FilePath)]
        schema = (StructType([StructField("SourceName", StringType(), True),StructField("SourceID", IntegerType(), True),StructField("IsComplete", IntegerType(), True),StructField("Status", StringType(), True),StructField("StartDate", TimestampType(), True),StructField("EndDate", TimestampType(), True),StructField("ErrorMessage", StringType(), True),StructField("RowCounts", IntegerType(), True),StructField("FilePath", StringType(), True)]))
        rdd_l = sc.parallelize(l)
        log_df = spark.createDataFrame(rdd_l,schema)
        log_df.withColumn("StartDate",from_utc_timestamp(log_df.StartDate,"PST")).withColumn("EndDate",from_utc_timestamp(log_df.EndDate,"PST")).write.jdbc(url=url, table=tablename,mode="append", properties=properties)

使用单独的函数使用JDBC连接加载创建此日志的SQL表。

我在流程中的每个步骤之后创建日志,无论是否失败或跟踪运行时间以及完成。因此,在每个步骤之前,我将当前时间存储在变量start_date中。我不知道的是,正在处理或计算的步骤是花费时间还是记录过程状态需要时间。由于开始日期时间是从剪辑开始的那一刻开始,我不能说哪个是花时间。

要从SQL服务器中的同一个表中读取数据需要几秒钟,那么是否需要在同一时间写入表中?

我尝试在记录后运行explain(),但这只会告诉记录本身之前发生的事情。如何跟踪PySpark中每个步骤所花费的时间。

0 个答案:

没有答案