apache-spark
Wie kann ich eine Frage zu Apache Spark stellen?
Suche…
Einführung
Das Ziel dieses Themas besteht darin, bewährte Vorgehensweisen bei Fragen zu Apache Spark zu dokumentieren.
Umgebungsdetails:
Wenn Sie Fragen zu Apache Spark stellen, geben Sie bitte die folgenden Informationen an
- Vom Client verwendete Apache Spark-Version und ggf. Spark-Bereitstellung. Für API-relevante Fragen ist normalerweise "major" (1.6, 2.0, 2.1 usw.) ausreichend. Für Fragen zu möglichen Fehlern verwenden Sie immer die vollständige Versionsinformation.
- Scala-Version zum Erstellen von Spark-Binärdateien.
- JDK-Version (
java -version
). - Wenn Sie eine Gastsprache (Python, R) verwenden, geben Sie bitte Informationen zur Sprachversion an. Verwenden Sie in Python die Tags: python-2.x , python-3.x oder spezifischere, um zwischen Sprachvarianten zu unterscheiden.
- Build-Definition (
build.sbt
,pom.xml
), falls zutreffend, oder externe Abhängigkeitsversionen (Python, R), falls zutreffend. - Cluster-Manager (
local[n]
, Spark-Standalone, Yarn, Mesos), Modus (client
,cluster
) und ggf. andere Übergabeoptionen.
Beispieldaten und Code
Beispieldaten
Bitte versuchen Sie, ein Minimum an Eingabedaten in einem Format anzugeben, das direkt von den Antworten verwendet werden kann, ohne langwieriges und zeitaufwändiges Analysieren von Eingabedateien oder lokalen Sammlungen mit dem gesamten Code, der zum Erstellen verteilter Datenstrukturen erforderlich ist.
Falls zutreffend, bitte Typinformationen angeben:
- In der RDD-basierten API verwenden Sie bei Bedarf Typanmerkungen.
- Geben Sie in der DataFrame-basierten API Schemainformationen als
StrucType
oder als Ausgabe vonDataset.printSchema
.
Die Ausgabe von Dataset.show
oder print
kann gut aussehen, sagt jedoch nichts über die zugrunde liegenden Typen aus.
Wenn ein bestimmtes Problem nur bei der Skalierung auftritt, verwenden Sie Zufallsdatengeneratoren (Spark bietet einige nützliche Dienstprogramme in org.apache.spark.mllib.random.RandomRDDs
und org.apache.spark.graphx.util.GraphGenerators
Code
Bitte verwenden Sie nach Möglichkeit Typanmerkungen. Während Ihr Compiler die Typen leicht nachverfolgen kann, ist dies für Sterbliche nicht so einfach. Zum Beispiel:
val lines: RDD[String] = rdd.map(someFunction)
oder
def f(x: String): Int = ???
sind besser als:
val lines = rdd.map(someFunction)
und
def f(x: String) = ???
beziehungsweise.
Diagnoseinformationen
Fragen debuggen.
Wenn sich die Frage auf das Debuggen einer bestimmten Ausnahme bezieht, stellen Sie immer ein relevantes Traceback bereit. Es ist zwar ratsam, doppelte Ausgaben (von verschiedenen Executoren oder Versuchen) zu entfernen, die Tracebacks sollten jedoch nicht auf eine einzelne Zeile oder Ausnahmeklasse beschränkt werden.
Fragen zur Leistung
Versuchen Sie je nach Kontext, Details anzugeben:
-
RDD.debugString
/Dataset.explain
. - Ausgabe von der Spark-Benutzeroberfläche mit DAG-Diagramm, falls zutreffend, falls zutreffend.
- Relevante Protokollnachrichten
- Diagnoseinformationen, die von externen Tools (Ganglia, VisualVM) erfasst wurden.
Bevor du fragst
- Suchstapelüberlauf für doppelte Fragen. Es gibt häufige Probleme, die bereits ausführlich dokumentiert wurden.
- Lesen Wie stelle ich eine gute Frage? .
- Lesen zu welchen Themen kann ich hier fragen?
- Ressourcen der Apache Spark-Community