Wie Messen die Ausführungszeit einer Abfrage auf Spark
Brauche ich zum Messen der Ausführungszeit von Abfragen auf Apache spark (Bluemix).
Was habe ich versucht:
import time
startTimeQuery = time.clock()
df = sqlContext.sql(query)
df.show()
endTimeQuery = time.clock()
runTimeQuery = endTimeQuery - startTimeQuery
Ist es eine gute Möglichkeit? Die Zeit, die ich bekomme sieht zu klein im Verhältnis zu, wenn ich die Tabelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update:
Nein, mit
time
Paket ist nicht der beste Weg zum Messen der Ausführungszeit von Funke-jobs. Die meisten bequeme und genaue Möglichkeit, die ich kenne, ist die Verwendung der Spark-Geschichte-Server.Auf Bluemix, in Ihre Notizbücher gehen Sie zu den "Paelette" auf der rechten Seite. Wählen Sie die "R" - Panel, und Sie werden sehen, einen link zu der Funke der Geschichte-Server, wo Sie können untersuchen, die durchgeführt Funke Arbeitsplätze einschließlich berechnungszeiten.
Benutze ich
System.nanoTime
gewickelt eine Helfer-Funktion, wie dies -In der Kommandozeile verwenden, können Sie
spark.time()
.Siehe andere Antwort von mir: https://stackoverflow.com/a/50289329/3397114
df = sqlContext.sql(query)
spark.time(df.show())
Die Ausgabe wäre:
+----+----+
|col1|col2|
+----+----+
|val1|val2|
+----+----+
Time taken: xxx ms
https://db-blog.web.cern.ch/blog/luca-canali/2017-03-measuring-apache-spark-workload-metrics-performance-troubleshooting
time()
FUNKE selbst bietet granularen Informationen zu jeder einzelnen Phase Ihrer Spark-Job.
Können Sie Ihren Laufenden job auf http://IP-MasterNode:4040 oder Sie können die Geschichte-server, die für die Analyse der Arbeitsplätze zu einem späteren Zeitpunkt.
Finden hier für mehr info auf Geschichte-server.