2016-10-08 9 views
1

私はSpringのアプリケーションで、spring(http://docs.spring.io/spring-hadoop/docs/current/reference/html/springandhadoop-spark.html)によって提供されるこのガイドに従い、Apacheのspark統合を作成したいと考えています。スパーク2.0.1にはスパーク・アセンブリ・ジャーが含まれていないようです。Apache Spark 2.0.1とSpringの統合

統合はjarに依存しているように見えますが、これを進める際の選択肢は何ですか?

古い瓶を見つけることができたら、私はそれをApache 2.0.1で使用できるでしょうか?

Apache 2.0.1でjarファイルを入手する方法はありますか?

答えて

2

はい、正しくあります - spark 2.0.1には、1.6.x以下のような自分自身のuber jarは含まれていません(例:spark-1.6.2-bin-hadoop2.6 \ lib \ spark-assembly-1.6 .2-hadoop2.6.0.jar

スパーク2.0.0+ spark-release-2-0-0.htmlは、ファットアセンブリウーバージャーを必要としません。しかし、あなたがspark-2.0.0-bin-hadoop2.7\jars\spark-assembly-1.6.2-hadoop2.6.0とLIBS(jarファイルの内容)の内容を比較するときに同じクラスとほぼ同じ内容を見ることができ、パッケージなど

私は古いjarファイルを見つけることができていた場合、私ができるようになりますApache 2.0.1で使用するには? 個人的に私はそうは思わない。下位互換性に関するいくつかの問題があるかもしれません。latestバージョンで削除されたものがあるのは変です。

@Override 
    public void afterPropertiesSet() throws Exception { 
     Assert.hasText(sparkAssemblyJar, "sparkAssemblyJar property was not set. " + 
       "You must specify the path for the spark-assembly jar file. " + 
       "It can either be a local file or stored in HDFS using an 'hdfs://' prefix."); 

しかし、あなたはSparkYarnTaskletを使用するときに、このsparkAssemblyJarだけsparkConf.set("spark.yarn.jar", sparkAssemblyJar);

  • で使用される、いくつかpostPropertiesSetの検証があるので

あなたはSparkYarnTasklet組立ジャーが必要であることを右ですプログラムはおそらく妥当性検査で失敗するでしょう(SparkYarnTaskletと妥当性検査なしでafterPropertiesSetを上書きしようとすることができます)

そしてdocumentation about "spark.yarn.jar:"

YARN側からスパークランタイムのjarファイルにアクセスできるようにするには、あなたは spark.yarn.archiveまたはspark.yarn.jarsを指定することができます。詳細は、 スパークのプロパティを参照してください。 spark.yarn.archiveとspark.yarn.jarsのどちらも が指定されていない場合、Sparkはすべてのjarファイルを $ SPARK_HOME/jarsに作成し、分散キャッシュにアップロードします。

したがって、プロパティ:spark.yarn.jarsおよびspark.yarn.archiveを見てください。 だから、1.6で

  • spark.yarn.jarを1.6.x-でspark.yarn.jarが何であるかを比較し、2.0.0+。2:デフォルト場所をオーバーライドする場合に

スパークjarファイルの位置が、望まれます。デフォルトでは、YARNのSparkはローカルにインストールされたSpark jarを使用しますが、Spark jarはHDFSの世界で読める場所にもあります。これにより、YARNはアプリケーションを実行するたびに配布する必要がないように、YARNをノードにキャッシュすることができます。たとえば、HDFS上のjarを指すには、この設定をhdfs:/// some/pathに設定します。 2.0.1で

  • spark.yarn.jar:糸に コンテナを配布するスパークコードを含むライブラリーの

リスト。デフォルトでは、YARNのSparkはローカルにインストールされた のSpark jarを使用しますが、Spark jarはHDFS上で世界的に読める場所 にもなります。これにより、アプリケーションが実行されるたびに を配布する必要がないように、YARNがノードにキャッシュすることができます。たとえば、 HDFS上のjarを指すには、この構成をhdfs:/// some/pathに設定します。グローブ は許可されています。

これはすべての瓶を1つずつセットするようです。

spark.yarn.jarsの代わりにspark.yarn.archiveがあり、jarを1つずつ渡すのを避ける方法を提供します - ルート "dir"のすべてのjarを含むアーカイブを作成します。

私はspring-hadoopは数週間のうちに2.0.0+の変化を反映しますが、「クイックフィックス」のために、私はおそらくSparkYarnTaskletをオーバーライドして、2.0.1のための変更を反映しようと考えて - 私は正確にexecuteafterPropertiesSet方法を見たように。

+0

これは本当に良いアドバイスありがとうございました。私は一歩を踏み出し、時間は私の側にはないが、すぐに2.0.0+にアップグレードしたいと思っているので、今度はspark 1.5.0を使用しました。この情報はすごく役立ちます –