Pyspark结构化流媒体应用程序在控制台中打印每个文件的执行时间
我想测量执行时间,并从应用程序本身分析Pyspark结构化流。例如,我想用Pyspark结构化流媒体应用程序在控制台中打印每个文件的执行时间,pyspark,spark-structured-streaming,Pyspark,Spark Structured Streaming,我想测量执行时间,并从应用程序本身分析Pyspark结构化流。例如,我想用 from pyspark import SparkContext from pyspark.sql import SparkSession from pyspark.sql.types import StructType import time if __name__ == "__main__": sc = SparkSession.builder.master('spark://localhost:7
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType
import time
if __name__ == "__main__":
sc = SparkSession.builder.master('spark://localhost:7077').getOrCreate()
df = sc.readStream.schema(pq_schema).parquet('../data/parquet')
df.createOrReplaceTempView("vw_table")
exec_query = sc.sql("""
select sum(field_1), count(field_2), field_3 from vw_table group by field_3
""")
result_q = df_st.writeStream.outputMode("complete").format("console").start()
result_q.awaitTermination()
然后我会将一个文件复制到文件夹中,并每次检查每个文件。是否可以从Python脚本执行此操作?出于测试目的,您可以减少每个触发器的文件数:
df=sc.readStream.schema(pq\u schema)\
.选项(“maxFilesPerTrigger”,1)\
.parquet(“../data/parquet”)
然后在Spark UI中找到每个批次的持续时间。
或者,您可以在每个槽中添加时间戳(用于本地测试)。不推荐使用此代码,并且它并不总是正常工作。这是一个快速的攻击
从日期时间导入日期时间
startTime=datetime.now()
batchId=1
def批次持续时间(df,历元id):
全局开始时间,batchId
打印(“批处理{}={}的处理时间”。格式(batchId,datetime.now()-startTime))
startTime=datetime.now()
batchId+=1
结果_q=df_st.writeStream\
.outputMode(“完成”)\
.foreachBatch(批次持续时间)\
.start()\
.终止