2016-05-10 9 views
1

Как можно активировать профили Hadoop и YARN при построении Spark на Windows (8-10) с SBT?Как создать Spark 1.6.1 с SBT в Windows с использованием профилей Hadoop?

>sbt package 

Приведенный выше код работает, но не может активировать следующие профили:

>sbt -Pyarn package 

Я спрашиваю, потому что mvn исключительно медленно по сравнению с SBT. У меня есть опыт создания Spark на Linux с использованием как SBT, так и Maven.

+0

У меня есть два вопроса. 1. Почему вам нужно перестроить искру в Windows? Почему бы не использовать одну из готовых бинарных версий, доступных на сайте Spark? 2. В Windows, как вы пытаетесь запустить sbt и процесс сборки? вы используете PowerShell, например Cygwin? – user1314742

+0

Ответ на первый вопрос обычно приводит к огромному аргументу о том, «почему бы вам делать то, что вы хотели бы сделать», поэтому я просто избегу этого, если вы не возражаете. Я просто вызываю команду 'sbt' из простого терминала. – Dyin

+0

Я бы порекомендовал то же самое, что упоминалось в @Vitaliy Kotlyarenko, sbt не предназначен для поддержки профилей maven, поэтому вам нужно использовать sbt, который поставляется с исходным кодом Spark – user1314742

ответ

2

Вы должны использовать скрипт ./build/sbt в комплекте с источником источника искры. Это вызывает другой сценарий sbt-launch-lib.bash, что делает некоторые профиль связанные с магией:

enableProfile() { 
    dlog "[enableProfile] arg = '$1'" 
    maven_profiles=("${maven_profiles[@]}" "$1") 
    export SBT_MAVEN_PROFILES="${maven_profiles[@]}" 
} 

С другой стороны, определение проекта SparkBuild расширяет PomBuild, что позволяет использование проекта Maven (включая профили):

override val profiles = {                            
    val profiles = Properties.envOrNone("SBT_MAVEN_PROFILES") match {                  
    ... 
    }                                
    profiles                                
}  

So он должен работать, если вы запустите его, как это (с помощью Cygwin):

sh build/sbt -Pyarn package 

тем не менее, это не работает для меня из из-за неправильного обнаружения пути до sbt-launch-lib.bash. Поэтому я заменил в build\sbt одной строке:

. "$(dirname "$(realpath "$0")")"/sbt-launch-lib.bash 

в

. "$(dirname "$(realpath "$0")")"/build/sbt-launch-lib.bash 
+0

Спасибо. Это сработало. – Dyin