2

Spark 下载页面,如果我下载v2.0.1 的 tar 文件,我会看到它包含一些我认为可以包含在我的应用程序中的 jar。

如果我改为下载v1.6.2 的 tar 文件,则在其中找不到 jars 文件夹。是否有我应该从该站点使用的替代包类型?我目前正在选择默认值(为 Hadoop 2.6 预先构建)。或者,我可以在哪里找到这些 Spark jar - 我应该从http://spark-packages.org单独获取它们吗?

这是我想使用的一组指示性罐子:

  • hadoop-通用
  • 火花芯
  • 火花-csv
  • 火花-sql
  • 单义解析器
  • 火花催化剂
  • json4s-核心
4

1 回答 1

5

Sparks 发布其运行时的方式已从 V1 更改为 V2。

  • 在 V2 中,默认情况下,您在下面有多个JAR $SPARK_HOME/jars
  • 在 V1 中,默认情况下,只有一个包含所有依赖项的 海量文件。spark-assembly*.jar$SPARK_HOME/lib

我相信您可以更改默认行为,但这需要您自己重新编译 Spark...

而且,spark-csv具体来说:

  • 在 V2 中,SparkSQL 原生支持 CSV 文件格式
  • 在 V1 中,您必须从 Spark-Packages.org 以及 Commons.Apache.org 下载(对于Scala 2.10spark-csv)并将两个 JAR 添加到您的 CLASSPATH (使用命令行,或者如果命令行不起作用,则使用 prop + 指令出于某种原因)...而且语法也更麻烦commons-csv
    --jarsspark.driver.extraClassPathsc.addJar()


摘自$SPARK_HOME/bin/spark-classSpark 2.1.x 的原版(大大简化)

# 查找 Spark jar

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

从 Spark 1.6.x 开始

# 找到组装jar

  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"
于 2017-03-07T18:15:00.770 回答