2017-08-06 12 views
1

Spark v1からv2へのsparkアプリケーションの設定から移行しようとしています。 v1では、Spark ContextとSpark Configを使用して初期化します。しかし、Spark v2(クイックスタートガイド)の最新のドキュメントによると、Spark Sessionを使用する必要があります。設定がspark-submitを使用してcmdから渡されることが推奨されています(私が参照したものは、 :https://spark.apache.org/docs/latest/quick-start.html)。v1とv2のSpark Appの実行

以下は私のアプリです.Spark Sessionのもの(v2)がコメントアウトされ、v1でどのように動作するかを示しています。このように実行すると、「Spark Contextの初期化に失敗しました」というエラーが表示されます。その後、Spark Session(v2)のために私のコメントを並べ替えて、アプリケーションをJARとしてパッケージ化し、cmdでspark-submitを使用して実行すると(上記の同じガイドに従って)、エラーが表示されます: "JARファイルからメインクラスをロードできません:/ C:/"

SPARK_HOME変数を正しいバージョンに変更していますが、ビルドファイルで適切なバージョンに変更しています。

これはアプリです:

import org.apache.spark.{SparkContext, SparkConf} 
import org.apache.spark.sql.SparkSession 

object Pack { 
    def main(args: Array[String]) { 

    val conf = new SparkConf().setMaster("local[*]").setAppName("Pack") 
    .set("spark.executor.memory", "2g") 
    val sc = new SparkContext(conf) 

    /* val spark = SparkSession.builder.appName("PackTest").getOrCreate() */ 

    val logFile = "C:/Spark/spark-2.2.0-bin-hadoop2.7/bin/README.md" 

    val logData = sc.textFile(logFile).cache() 
    /* val logData = spark.read.textFile(logFile).cache() */ 

    val numAs = logData.filter(line => line.contains("a")).count() 
    val numBs = logData.filter(line => line.contains("b")).count() 
    println(s"Lines with a: $numAs, Lines with b: $numBs") 

    /* spark.stop() */ 
    } 
} 

これは、SBTのビルドファイルです:解決

name := "Pack" 

version := "1.0" 

scalaVersion := "2.11.8" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" /* 2.2.0 
when trying sparksession */ 

libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.6.1" /* 2.2.0 
when trying sparksession */ 
+0

スパークの依存関係に%を使用してみてください – aclokay

+0

問題の最初の部分は簡単な解決策でした:アプリケーションがあるフォルダがsrcフォルダ(Intellij)として定義されていることを確認してください。そのために、v1のアプローチを整理します。しかし、cmdでspark-submitを使用して実行しようとすると、同じクラスの「can not load class ...」エラーが発生しています。 ... sparkの依存関係に "提供された"%を追加しました。 –

答えて

1

[OK]を、。 v1への解決策はすでに私のコメントで言及されています。 クラスを 'scala-2.11'(Intellij)の代わりに 'scala'というsrcフォルダに移動することになりました。これは、v2の場合、 。 私はまた、再構築を実行しましたが、これに影響があるかどうかはわかりません。

些細な問題だと思われますが、問題を整理しました。

関連する問題