apache-spark
Come chiedere ad Apache Spark la domanda correlata?
Ricerca…
introduzione
L'obiettivo di questo argomento è documentare le migliori pratiche quando si pongono domande relative ad Apache Spark.
Dettagli ambientali:
Quando si pongono domande relative ad Apache Spark, si prega di includere le seguenti informazioni
- Versione di Apache Spark utilizzata dal client e distribuzione di Spark se applicabile. Per le domande relative alle API principali (1,6, 2,0, 2,1 ecc.) È in genere sufficiente, per domande relative a possibili bug utilizzare sempre le informazioni sulla versione completa.
- Versione di Scala usata per costruire i binari di Spark.
- Versione JDK (
java -version
). - Se si utilizza la lingua ospite (Python, R), fornire informazioni sulla versione della lingua. In Python usate i tag: python-2.x , python-3.x o più specifici per distinguere le varianti linguistiche.
- Build definition (
build.sbt
,pom.xml
), se applicabile o versioni di dipendenze esterne (Python, R) quando applicabile. - Gestore cluster (
local[n]
, Spark standalone, Filato, Mesos), modalità (client
,cluster
) e altre opzioni di invio, se applicabile.
Esempio di dati e codice
Dati di esempio
Si prega di provare a fornire un esempio minimo di dati di input in un formato che può essere utilizzato direttamente dalle risposte senza analisi lunghe e noiose, ad esempio file di input o raccolta locale con tutto il codice richiesto per creare strutture di dati distribuite.
Quando applicabile, includi sempre le informazioni sul tipo:
- Nell'API basata su RDD, utilizzare le annotazioni sul tipo, se necessario.
- Nell'API basata su DataFrame fornisce informazioni
StrucType
schema come un tipo di oggettoStrucType
o output daDataset.printSchema
.
L'output di Dataset.show
o di print
può avere un bell'aspetto ma non ci dice nulla sui tipi sottostanti.
Se un problema particolare si verifica solo su scala, utilizzare generatori di dati casuali (Spark fornisce alcune utili utilità in org.apache.spark.mllib.random.RandomRDDs
e org.apache.spark.graphx.util.GraphGenerators
Codice
Si prega di utilizzare annotazioni tipo quando possibile. Mentre il tuo compilatore può facilmente tenere traccia dei tipi non è così facile per i comuni mortali. Per esempio:
val lines: RDD[String] = rdd.map(someFunction)
o
def f(x: String): Int = ???
sono meglio di:
val lines = rdd.map(someFunction)
e
def f(x: String) = ???
rispettivamente.
Informazioni diagnostiche
Domande di debug.
Quando la domanda è correlata al debug di un'eccezione specifica, fornire sempre un traceback pertinente. Mentre è consigliabile rimuovere le uscite duplicate (da diversi esecutori o tentativi) non tagliare i traceback su una sola riga o su una sola classe di eccezioni.
Domande sulle prestazioni.
A seconda del contesto, prova a fornire dettagli come:
-
RDD.debugString
/Dataset.explain
. - Output da Spark UI con diagramma DAG se applicabile in casi particolari.
- Messaggi di log rilevanti.
- Informazioni diagnostiche raccolte da strumenti esterni (Ganglia, VisualVM).
Prima di chiedere
- Ricerca overflow dello stack per domande duplicate. Esiste una classe comune di problemi che sono stati già ampiamente documentati.
- Leggi Come faccio a fare una buona domanda? .
- Leggi Quali argomenti posso chiedere qui?
- Risorse della community di Apache Spark