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: , 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 oggetto StrucType o output da Dataset.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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow