Recherche…


Introduction

L'objectif de cette rubrique est de documenter les meilleures pratiques lorsque vous posez des questions sur Apache Spark.

Détails de l'environnement:

Lorsque vous posez des questions sur Apache Spark, veuillez inclure les informations suivantes.

  • Version Apache Spark utilisée par le client et déploiement Spark, le cas échéant. Pour les questions liées à l'API, les questions majeures (1.6, 2.0, 2.1, etc.) sont généralement suffisantes, car les questions concernant d'éventuels bogues utilisent toujours des informations complètes sur la version.
  • Version Scala utilisée pour construire des binaires Spark.
  • Version JDK (version java -version ).
  • Si vous utilisez le langage invité (Python, R), veuillez fournir des informations sur la version linguistique. Dans Python, utilisez des balises: , ou des balises plus spécifiques pour distinguer les variantes de langage.
  • Créez la définition ( build.sbt , pom.xml ), le cas échéant, ou les versions de dépendance externes (Python, R), le cas échéant.
  • Gestionnaire de cluster ( local[n] , Spark autonome, Yarn, Mesos), mode ( client , cluster ) et autres options d'envoi, le cas échéant.

Exemple de données et code

Exemple de données

Essayez de fournir un exemple minimal de données d'entrée dans un format directement utilisable par les réponses, sans analyse fastidieuse et longue, par exemple un fichier d'entrée ou une collection locale avec tout le code requis pour créer des structures de données distribuées.

Le cas échéant, incluez toujours des informations sur le type:

  • Dans les API basées sur RDD, utilisez les annotations de type si nécessaire.
  • Dans l'API basée sur DataFrame, fournissez des informations de schéma sous la forme d'un StrucType ou d'une sortie de Dataset.printSchema .

La sortie de Dataset.show ou print peut avoir un bon aspect mais ne nous dit rien sur les types sous-jacents.

Si un problème particulier se produit uniquement à l’échelle, utilisez des générateurs de données aléatoires (Spark fournit des utilitaires utiles dans org.apache.spark.mllib.random.RandomRDDs et org.apache.spark.graphx.util.GraphGenerators

Code

Veuillez utiliser des annotations de type lorsque cela est possible. Bien que votre compilateur puisse facilement suivre les types, il n’est pas si facile pour les simples mortels. Par exemple:

val lines: RDD[String] = rdd.map(someFunction)

ou

def f(x: String): Int = ???

sont meilleurs que:

val lines = rdd.map(someFunction)

et

def f(x: String) = ???

respectivement.

Informations de diagnostic

Questions de débogage

Lorsque la question est liée au débogage d'une exception spécifique, fournissez toujours une trace appropriée. Bien qu'il soit conseillé de supprimer les sorties en double (provenant de différents exécuteurs ou tentatives), ne coupez pas les traces vers une seule ligne ou une seule classe d'exception.

Questions de performance

En fonction du contexte, essayez de fournir des détails tels que:

  • RDD.debugString / Dataset.explain .
  • Sortie de l'interface utilisateur Spark avec diagramme DAG si applicable dans un cas particulier.
  • Messages de journal pertinents.
  • Informations de diagnostic collectées par des outils externes (Ganglia, VisualVM).

Avant de demander



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow