Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 用于EMR spark集群中downloadind jar依赖项的引导脚本_Apache Spark_Amazon S3_Sbt_Amazon Emr - Fatal编程技术网

Apache spark 用于EMR spark集群中downloadind jar依赖项的引导脚本

Apache spark 用于EMR spark集群中downloadind jar依赖项的引导脚本,apache-spark,amazon-s3,sbt,amazon-emr,Apache Spark,Amazon S3,Sbt,Amazon Emr,我想做一些非常简单的事情(我相信) 我在EMR Spark中运行我的自定义jar。现在我做的是 sbt assembly 它创建了一个胖jar(80MB-120MB),这对于在S3中上传来说是一件痛苦的事情 我想要的,是使用 sbt pack 要获得文件夹中的所有jar,请在S3中上载一次,然后每次我想要上载新jar时,都会上载已编译的jar,而无需依赖项 我相信bootstrap.sh会将所有jar复制到集群中,然后使用--jars参数 有人这样做过吗 In build.sbt添加依赖项,

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

sbt assembly
它创建了一个胖jar(80MB-120MB),这对于在S3中上传来说是一件痛苦的事情

我想要的,是使用

sbt pack
要获得文件夹中的所有jar,请在S3中上载一次,然后每次我想要上载新jar时,都会上载已编译的jar,而无需依赖项

我相信bootstrap.sh会将所有jar复制到集群中,然后使用
--jars
参数


有人这样做过吗

In 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
以下是一个例子: 首先,创建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,比如说上传到“你的桶中”
最后,在您的EMR创建脚本中添加此行:

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

我已经在spark库中添加了provided,但我的fat jar仍然超过80MB。没有提供的依赖项还有什么?我使用GeoGrillis、geowave、geomesa等,您可以为这些库添加provided并构建fat jar。在运行时/spark提交期间,您可以提供--jars。