まだmavenに精通し、ソースコードをspark-submit用のjarファイルにコンパイルしようとしています。私はIntelliJの使い方を知っていますが、これが実際にどのように機能するかを理解したいと思います。私はsparkやscalaのような最新のソフトウェアをすべてインストールしたEC2サーバを持っていて、今はmavenでコンパイルしたいSparkPi.scalaソースコードのサンプルを持っています。私のばかげた質問は第一に、mavenリポジトリから依存関係を取得するのではなく、コードを構築するために私のインストールしたソフトウェアを使うことができますか、そして、適切な要件を追加するための基本的なpom.xmlテンプレートから始めるにはどうすればいいですか?私は、Mavenが正確に何をしているのかを完全に理解していません。私のソースコードのコンパイルをテストするにはどうしたらいいですか? 私はそれを理解しているので、標準のディレクトリ構造src/main/scala
を持っていて、mvn package
を実行したいだけです。また、私はsbtではなくmavenでテストしたいと思います。インストール済みのsparkとmavenを使用してSpark Scalaプログラムをjarファイルにコンパイル
答えて
追加以下の手順に従ってpom.xml
にmvn clean package
を使用してください。 pom.xml
にbuild
と表示されていることを確認してfat-jar
にしてください。詳細については
<build><sourceDirectory>src</sourceDirectory>
<plugins><plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin></plugins>
</build>
(これは私が瓶を作ってるんだか、私の場合です):あなたはsbt project
を持っている場合はlink 、fat-jar
を作るためにsbt clean assembly
を使用しています。そのために、あなたはまた、のようなplugin.sbt
build.sbt
assemblyJarName := "WordCountSimple.jar"
//
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
case PathList("javax", "servlet", [email protected]_*) => MergeStrategy.first
case PathList([email protected]_*) if ps.last endsWith ".html" => MergeStrategy.first
case n if n.startsWith("reference.conf") => MergeStrategy.concat
case n if n.endsWith(".conf") => MergeStrategy.concat
case meta(_) => MergeStrategy.discard
case x => MergeStrategy.first
}
の例として、以下の設定が必要になります。もっとthisとthisを参照してください
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")
について。
ここまでの目標は、ターゲットフォルダ内のすべての依存関係でfat-jarを取得することです。このように、クラスタで実行するには、そのjarファイルを使用します。
[email protected]:/usr/local/spark$ ./bin/spark-submit --class com.hastimal.wordcount --master yarn-cluster --num-executors 15 --executor-memory 52g --executor-cores 7 --driver-memory 52g --driver-cores 7 --conf spark.default.parallelism=105 --conf spark.driver.maxResultSize=4g --conf spark.network.timeout=300 --conf spark.yarn.executor.memoryOverhead=4608 --conf spark.yarn.driver.memoryOverhead=4608 --conf spark.akka.frameSize=1200 --conf spark.io.compression.codec=lz4 --conf spark.rdd.compress=true --conf spark.broadcast.compress=true --conf spark.shuffle.spill.compress=true --conf spark.shuffle.compress=true --conf spark.shuffle.manager=sort /users/hastimal/wordcount.jar inputRDF/data_all.txt /output
は、ここで私が
inputRDF/data_all.txt /output
二つの引数を持っています。また、ツールの観点から私はIDEとして
Intellij
にビルドしています。
ありがとうございます。基本的に私はそれを理解しています。 pom.xmlにsparkやscalaの依存関係を含める必要はありませんか?私がpom.xmlの中のすべてのソフトウェアの依存関係を、あなたが示したように放置するのを見かける理由を理解したいのですが。 IntelliJでコードを作成するときは、単にsparkとscalaをモジュールとして追加し、基本的なmavenビルドを実行してspark-submit用のfat-jarを作成するだけですか? – horatio1701d
@ prometheus2305あなたの質問への簡単な答え:1.はい、 'build.sbt'または' pom.xml'にAppに必要なすべての依存関係が必要です。 2.私はScala-SBTプロジェクトを作ってから、 'build.sbt'と' plugin.sbt'に物を追加しています。それが私の知識のための最も簡単な方法です。上記のリンクを使用してください。 – ChikuMiku
まだ少し混乱しています。既にsparkを持っている独立したリモートクラスタ上でspark-submitを実行するためにプロジェクトをjarにパッケージ化する必要があるのであれば、pom.xmlにsparkとscalaを明示的に追加する必要があります。コンパイルとjarファイルの作成に必要な最小限のmavenが必要ですか? – horatio1701d
あなたはmvn project
を持っている場合は、@Krishna、 へ
# create assembly jar upon code change
sbt assembly
# transfer the jar to a cluster
scp target/scala-2.10/myproject-version-assembly.jar <some location in your cluster>
# fire spark-submit on your cluster
$SPARK_HOME/bin/spark-submit --class not.memorable.package.applicaiton.class --master yarn --num-executor 10 \
--conf some.crazy.config=xyz --executor-memory=lotsG \
myproject-version-assembly.jar \
<glorious-application-arguments...>
- 1. scala spark cassandraインストール
- 2. Sparkに.jarをインストールする
- 3. EclipseのSparkプロジェクト用MavenセットアップScala IDE
- 4. Scala APIを使用してTSVをSpark Dataframeに読み込む
- 5. Maven spring-boot:コンパイル済みのjarファイルに対して実行する
- 6. Mavenを使用したApache sparkエラー
- 7. Netbeans:コンパイル済みのjarファイルのメインクラス
- 8. Mavenを使ったScala Sparkプロジェクトのパッケージ化と実行
- 9. Spark用のscalaとjava?
- 10. APIを使用してzeppelin sparkインタープリタにjarをプログラムで追加します。
- 11. Spark-shellは異なるバージョンのScalaを使用します。使用してhomebrewをscalaとapache-sparkの両方をインストールする
- 12. SparkとScalaを使用してローカルpostgresqlデータベースに接続
- 13. GWT-Maven-plugin:GWTコンパイル済みファイルを定義済みのディレクトリにリンクします。
- 14. Mavenを使ってSparkをインストールする(MAC OSX)
- 15. インストール済みのmaven jarで単一のテストを実行
- 16. Makefile:g ++コンパイル済みbnfcプロジェクトの一部としてllvmプログラムをコンパイル
- 17. Sparkがすべての設定済みメモリを使用していません
- 18. Spark Scala 2.11.8 Spark HbaseConnectorエラー
- 19. ScalaのFSCとテストのソースファイルをコンパイルし、MavenのScalaのプラグインを使用して
- 20. SparkでScalaを使用して2つのRDDに参加
- 21. Spark Scalaを使用してCassandraにタイムスタンプを挿入
- 22. IntelliJ ScalaワークシートでApache Sparkを使用
- 23. Spark DataFrameでna.fillを使用するScala
- 24. Spark/Scalaを使用してHDFSファイルの繰り返し書き込みを使用する
- 25. Scala - Spark:結果をファイルに保存
- 26. Scalaを使用してmysqlからデータを抽出し、sparkを
- 27. SparkのRankingMetrics(Scala)
- 28. Scalaの[行] Spark
- 29. Scala/Sparkのクラスインポートエラー
- 30. Spark/Scalaのフォーマットログ
あなたが達成しようとしているものによって異なります。ローカルマシンでサンプルを実行するか、クラスタ上でサンプルを実行します。 –
EC2のスパーククラスタで例を実行しようとしています。私はIntelliJでローカルにコンパイルする方法を知っていますが、サーバー上でソースコードをコンパイルする正しい方法は何ですか。 – horatio1701d