2017-11-20 7 views
0

Ich beschäftige mich häufig mit Behältern, die von YARN wegen Überschreitung der Speichergrenzen getötet werden. Ich vermute, dass es mit dem Zwischenspeichern von RDDS/Dataframes in einer ineffizienten Weise zu tun hat.Wie kann ich die Größe bestimmter RDDs im Cache herausfinden?

Was ist der beste Weg, diese Art von Problem zu debuggen?

Ich habe auf der Spark Web UI die Registerkarte "Speicher" angeschaut, aber die "RDD-Namen" werden nicht beschreibender als "MapPartitionsRDD" oder "UnionRDD". Wie finde ich heraus, welche RDDs am meisten Platz im Cache einnehmen?

Um herauszufinden, die Out-of-Memory-Fehler, muss ich herausfinden, welche RDDs den meisten Platz im Cache einnehmen. Ich möchte auch verfolgen können, wenn sie nicht erreichbar sind.

Antwort

1
  • Für die RDDs können Sie aussagekräftigen Namen gesetzt mit setName Methode:

    val rdd: RDD[T] = ??? 
    rdd.setName("foo") 
    
  • Für catalog gesicherte Tabellen:

    val df: DataFrame = ??? 
    df.createOrReplaceTempView("foo") 
    spark.catalog.cacheTable("foo") 
    

    der Name im Katalog wird in beiden UI widerspiegeln und SparkContext.getPersistentRDD.

  • Mir ist keine Lösung bekannt, die für Standalone Datasets funktioniert.

+0

Vielen Dank! Gibt es einen guten Weg herauszufinden, wann die RDDs nicht geführt werden? Oder müssen Sie die Seite grundsätzlich auffrischen? –

Verwandte Themen