Apache spark 用于EMR spark集群中downloadind jar依赖项的引导脚本
我想做一些非常简单的事情(我相信) 我在EMR Spark中运行我的自定义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添加依赖项,
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。