【问题标题】:bootstrap script for downloadind jar dependencies in EMR spark cluster用于在 EMR spark 集群中下载 jar 依赖项的引导脚本
【发布时间】:2018-04-11 17:24:49
【问题描述】:

我想做一些非常简单的事情(我相信) 我在 EMR Spark 中运行我的自定义 jar。现在我在做类似的事情

sbt assembly

它创建了一个胖 jar (80MB-120MB),在 S3 中上传很痛苦。

我想要的,是使用

sbt pack

要获取文件夹中的所有 jar,请在 S3 中上传一次,然后每次我想上传新的 jar 时都会上传已编译的,没有依赖项。

我相信 bootstrap.sh 可能会发生这种情况,它将所有 jar 复制到集群,然后使用 --jars 参数。

有人做过吗?

【问题讨论】:

    标签: apache-spark amazon-s3 sbt amazon-emr


    【解决方案1】:

    这是一个例子: 首先,创建一个 bootstrap.sg 脚本。

        sudo wget http://dl.bintray.com/spark-packages/maven/graphframes/graphframes/0.6.0-spark2.3-s_2.11/graphframes-0.6.0-spark2.3-s_2.11.jar -P /usr/lib/spark/jars/
        sudo wget http://central.maven.org/maven2/com/typesafe/scala-logging/scala-logging-api_2.11/2.1.2/scala-logging-api_2.11-2.1.2.jar -P /usr/lib/spark/jars/
        sudo wget http://central.maven.org/maven2/com/typesafe/scala-logging/scala-logging-slf4j_2.11/2.1.1/scala-logging-slf4j_2.11-2.1.1.jar -P /usr/lib/spark/jars/
        sudo wget https://dl.bintray.com/spark-packages/maven/neo4j-contrib/neo4j-spark-connector/2.2.1-M5/neo4j-spark-connector-2.2.1-M5.jar -P /usr/lib/spark/jars/
    

    将 bootstrap.sh 上传到 S3,比如说到 'your_bucket'
    最后,在您的 EMR 创建脚本中添加这一行:

    --bootstrap-actions Path="s3://your_bucket/bootstrap.sh"
    

    【讨论】:

      【解决方案2】:

      在 build.sbt 中添加像 spark-core,spark-sql 这样的依赖项

      "org.apache.spark" %% "spark-core" % "1.5.1" % "provided",
      "org.apache.spark" %% "spark-sql" % "1.5.1" % "provided",
      

      还有 您可以添加在编译时提供的其他依赖项并构建程序集 jar。然后正如您在 spark-submit 中提到的,您可以添加依赖项,例如,

      --jars a.jar,b.jar
      

      【讨论】:

      • spark库中已经添加了provided,但是我的fat jar还是80多MB。
      • 没有提供还有什么依赖?
      • 好吧,我使用 geotrellis、geowave、geomesa 等
      • 您可以为这些添加提供并构建胖罐。在 runtime/spark-submit 期间,您可以提供 --jars。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2020-04-09
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多