2016-01-06 106 views
4

我需要測量Apache Spark(Bluemix)上查詢的執行時間。 我試過的:如何測量Spark上查詢的執行時間

import time 

startTimeQuery = time.clock() 
df = sqlContext.sql(query) 
df.show() 
endTimeQuery = time.clock() 
runTimeQuery = endTimeQuery - startTimeQuery 

這是一個好方法嗎?我得到的時間相對於當我看到桌子時看起來太小。

回答

2

在Bluemix上,在筆記本中,轉到右側的「Paelette」。選擇「Evironment」面板,您將看到一個鏈接到Spark History Server,您可以在其中查看執行的Spark作業,包括計算時間。

+0

我知道OP接受了答案,但奇怪的是,它並沒有真正回答他的問題,即使用time.clock()來測量查詢執行時間。我有同樣的問題,這就是爲什麼我最終在這裏,但最終沒有答案。 –

2

SPARK本身提供了關於Spark Job每個階段的詳細信息。

您可以在http://IP-MasterNode:4040上查看正在運行的作業,或者您可以啓用歷史記錄服務器以便稍後分析作業。

有關歷史記錄服務器上的更多信息,請參閱here

+2

的OP是問關於Bluemix Apache的星火服務,所以沒有自己的控制下運行自己的火花集羣;例如它不會在4040上公開ui。 –

5

我用System.nanoTime圍繞一個輔助函數包裹,像這樣 -

def time[A](f: => A) = { 
    val s = System.nanoTime 
    val ret = f 
    println("time: "+(System.nanoTime-s)/1e6+"ms") 
    ret 
} 

time { 
    df = sqlContext.sql(query) 
    df.show() 
}