2017-03-07 4 views
0

De la Spark downloads page, si je télécharge le tar file for v2.0.1, je vois qu'il contient des jars que je trouve utile d'inclure dans mon application.Où puis-je trouver le dossier jars dans Spark 1.6?

Si je télécharge le tar file for v1.6.2 à la place, je ne trouve pas le dossier jars là-dedans. Existe-t-il un autre type de package que je devrais utiliser à partir de ce site? Je choisis actuellement le défaut (pré-construit pour Hadoop 2.6). Alternativement, où je peux trouver ces pots Spark - dois-je obtenir chacun d'entre eux individuellement de http://spark-packages.org?

Voici un groupe représentatif de pots que je veux utiliser:

  • Hadoop commune
  • étincelle cœur
  • étincelle-csv
  • étincelle-sql
  • univocité-parseurs
  • étincelle-catalyseur
  • json4s-core
+1

Avant Spark 2, par défaut, il n'y a qu'un monstre d'une étincelle 'assemblage * .jar' sous' $ SPARK_HOME/lib' qui contient toutes les dépendances. Si vous voulez les fichiers JAR individuels, vous devez recompiler Spark. S'amuser! –

+1

De même 'spark-csv' est un téléchargement séparé * (n'était pas incorporé dans la base de code Spark avant V2) * et nécessite Apache' commons-csv'. –

+0

Merci! Voulez-vous ajouter ceci comme une réponse pour que je puisse fermer ceci? – sudheeshix

Répondre

2

La façon dont Sparks expédie son exécution a changé de V1 à V2.

  • En V2, par défaut, vous avez plusieurs JARs sous $SPARK_HOME/jars
  • En V1, par défaut, il y avait juste un massif spark-assembly*.jar sous $SPARK_HOME/lib que contient toutes les dépendances.

Je crois que vous pouvez changer le comportement par défaut, mais qui nécessiteraient recompiler Spark sur votre ...

Et aussi, à propos spark-csv spécifiquement:

  • En V2, le fichier CSV format est supporté nativement par SparkSQL
  • en V1, vous devez télécharger spark-csv (Scala 2.10) de Spark-Packages.org en plus de commons-csvCommons.Apache.org et ajoutez les fichiers JAR à votre CLASSP ATH
    (avec --jars en ligne de commande, ou prop spark.driver.extraClassPath + instruction sc.addJar() si la ligne de commande ne fonctionne pas pour une raison quelconque)
    ... et la syntaxe est plus lourde, trop


Extrait du vanille $SPARK_HOME/bin/spark-class au Spark 2.1.x (très simplifié)

# Recherche Spark pots

SPARK_JARS_DIR="${SPARK_HOME}/jars" 
    LAUNCH_CLASSPATH="$SPARK_JARS_DIR/*" 

Et à partir de Spark 1.6.x

# Trouver pot de montage

ASSEMBLY_DIR="${SPARK_HOME}/lib" 
    ASSEMBLY_JARS="$(ls -1 "$ASSEMBLY_DIR" | grep "^spark-assembly.*hadoop.*\.jar$" || true)" 
    SPARK_ASSEMBLY_JAR="${ASSEMBLY_DIR}/${ASSEMBLY_JARS}" 
    LAUNCH_CLASSPATH="$SPARK_ASSEMBLY_JAR" 
+0

dans spark 2.2.0 drop les jars dans '$ SPARK_HOME/jars' semble rendre les jars disponibles pour' spark-shell' et 'pyspark' via le terminal, mais quand je soumets une application spark ces pots ne sont pas ramassés, je Obtenir ClassNotFound excpt, dois-je spécifier autre chose lors de la construction de mon contexte d'étincelle? – perrohunter

+0

Que voulez-vous dire exactement par _ "Soumettre une application d'étincelle" _ >> cela implique-t-il un shell "spark-submit" qui invoque "spark-class" parmi beaucoup d'autres choses? Dans le cas contraire, vous devrez procéder à l'ingénierie inverse de tout le gâchis - bonne chance avec cela. –