Python UDF性能调优
DataArtsFabric SQL支持配置Python UDF运行时的资源规格和并发度,并支持统计运行时的关键性能指标。
UDF性能监控
使用explain performance可以打印UDF Actor运行的性能指标。如图1所示,统计了函数calculate_0311在每个DN所对应的UDF Actor的性能情况。下文以图中三行性能数据为例进行说明。
- executor0_es_group (UDF:calculate_0311 time=13406.2 rows=450 loops=1)中:
- executor0_es_group指的是DN ID。
- time描述该UDF总运行时间。
- rows表示在该DN上处理的数据量。
- loops表示调用UDF的次数。
- executor0_es_group [actor 0](Actor: invoke=2485.6 close=5.4 rtt=[2611.1, 8495.8, 5] send=[11.1, 25.1, 5] streamCreate=57.7 streamClose=450.3)描述的是第0个UDF Actor的信息,具体如下:
- Invoke表示拉起actor的耗时时间。
- close表示actor的关闭耗时。
- rtt表示每个miniBatch的端到端处理耗时,即最小耗时为2611.1 ms,最大耗时为8495.8 ms,总计处理了5个miniBatch。
- send表示数据发送端的耗时,即发送了5次,最小耗时为11.1 ms,最大耗时为25.1 ms。
- streamCreate指的DN和UDF Actor间传输数据的Stream创建耗时,streamClose指的关闭耗时。
- executor0_es_group [actor 0](MiniBatch: rows=[50, 50, 250] bytes=[13.19MB, 14.67MB, 69.89MB] totalExecuteTime=10453.2)中:
- minRows和maxRow分别表示MiniBatch的最小和最大行数。
- totalRows表示该actor处理的总数据量。
- minBytes和mixBytes分别表示miniBatch的数据大小的最小值和最大值,totalBytes表示该actor处理总数据量大小。
如下图所示,Summary中统计了该查询中所有UDF Actor的汇总信息。
- Actor Distribution Info表示actor分布信息,如下图所示,该查询的两个actor 0和1,分布在机器10.42.0.78上。
- Actor Stream topo create time表示stream创建的最小、最大时间。
- Actor Consumer close time表示消费端关闭的最小、最大时间。
- Actor Stream Producer/Consumer count表示数据流传输的消费端和生产端的总次数。
