Apache spark(Bluemix)でのクエリの実行時間を測定する必要があります。
import time
startTimeQuery = time.clock()
df = sqlContext.sql(query)
df.show()
endTimeQuery = time.clock()
runTimeQuery = endTimeQuery - startTimeQuery
いい方法ですか?テーブルを見るときと比べて、私が得る時間は小さすぎます。
pdate:いいえ、time
パッケージを使用することは、Sparkジョブの実行時間を測定する最良の方法ではありません。私が知る最も便利で正確な方法Spark履歴サーバーを使用することです。
Bluemixでは、ノートブックの右側にある「Paelette」に移動します。 「環境」パネルを選択すると、Spark History Serverへのリンクが表示され、計算時間を含む実行されたSparkジョブを調査できます。
コマンドラインでこれを行うには、spark.time()
を使用できます。
私の別の応答を参照してください: https://stackoverflow.com/a/50289329/3397114
df = sqlContext.sql(query) spark.time(df.show())
出力は次のようになります。
+----+----+ |col1|col2| +----+----+ |val1|val2| +----+----+ Time taken: xxx ms
私が使う 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()
}
SPARK自体は、Sparkジョブの各段階に関する詳細な情報を提供します。
http:// IP-MasterNode:404 で実行中のジョブを表示できます。または、後でジョブを分析するために履歴サーバーを有効にすることができます。
履歴サーバーの詳細については こちら を参照してください。