сценарий начальной загрузки для загрузки зависимостей jar в искровом кластере EMR

Я хочу сделать что-то действительно простое (я думаю). Я запускаю свою пользовательскую банку в EMR Spark. Сейчас я делаю что-то вроде

sbt assembly

и создается толстая банка (80–120 МБ), которую сложно загрузить в S3.

Я хочу использовать

sbt pack

Чтобы получить все банки в папке, загрузите один раз в S3, а затем каждый раз, когда я хочу загрузить новую банку, я буду загружать скомпилированную, без зависимостей.

Я считаю, что это может произойти с bootstrap.sh, который скопирует все банки в кластер, а затем использует параметр --jars.

Кто-нибудь сделал это?


person azouritis    schedule 30.10.2017    source источник


Ответы (2)


Вот пример: Сначала создайте скрипт 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"
person Tomer    schedule 12.12.2018

В 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
person WoodChopper    schedule 30.10.2017
comment
Я уже добавил предоставленные в спарке библиотеки, но все равно моя толстая банка больше 80Мб. - person azouritis; 30.10.2017
comment
какая еще зависимость есть без предоставления? - person WoodChopper; 30.10.2017
comment
Ну, я использую георешетку, геоволну, геомесу и т. д. - person azouritis; 31.10.2017
comment
вы можете добавить их и построить толстую банку. Во время выполнения/spark-submit вы можете указать --jars. - person WoodChopper; 31.10.2017