次に、
以下の開発記事では、ローカルSparkの開発例を紹介しています。Sparkはビッグデータを処理し、大規模なコンピュータークラスターで実行されることが多いですが、ローカルSparkはデバッグに便利で、関連する構文の学習に役立ちます。Mavenビルドツールの開発プロセスは、https://blog.csdn.net/u012373815/article/details/53266301で
開いてください。テストなど)、パス、JDKはインストールされたばかりの1.8を選択し、scala SDKは新しくインストールされたscala-sdk-2.11.8を選択します(または作成する権利をクリックして、ダウンロードするバージョンを選択します)=>完了
次に、srcを右クリック=>新規=> scalaクラス=> scalaオブジェクトドロップダウンボックスを選択し、クラス名を入力します。
テストコードを入力します。これは並べ替えコードのグループです:
import org.apache.spark。{SparkContext、SparkConf}
object Sort {
def main(args:Array [String]):Unit = {
val conf = new SparkConf()。SetAppName ( "GroupSort")
val sc = new SparkContext(conf)
val test = List(( "key1"、 "123"、12,2,0.13)、( "key1"、 "123"、12,3,0.18)、 ( "key2"、 "234"、12,1,0.09)、( "key1"、 "345"、12,8,0.75)、( "key2"、 "456"、12,5,0.45))
val rdd = sc.parallelize(test)
val rdd1 = rdd.map(l =>(l._1、(l._2、l._3、l._4、l._5)))。groupByKey().
flatMap(line = > {
val topItem = line._2.toArray.sortBy(_._ 4)(Ordering [Double]。
rdd1.foreach(println)
sc.stop()
}
}
ローカルモードを設定します。実行=>構成を編集=>アプリケーション=>アプリケーションを選択し、-Dspark.master = local -Dspark.app.name = testをVMオプションに追加します。
SparkとScala SDKが含まれています。プロジェクトディレクトリを右クリック=>モジュール設定を開く=>プロジェクト設定=>ライブラリ=> "+" => java => Sparkインストールディレクトリの下のjarフォルダーを選択=>確認します。同様に、 "+" => scala sdk =>必要なscala sdk(sparkバージョンに対応するsdk)を選択=>確認します。
コードを実行します。
3番目に、問題のコレクション:
1、インポートorg.apache.spark.SparkContextはパッケージを導入しましたが、次のコードはシンボルSparkContext(IDEA環境、Mavenプロジェクト)の
問題を解決できません問題チェック:プロジェクトディレクトリ右->オープンモジュール設定->プロジェクト設定->ライブラリ。左側に依存ライブラリが含まれていないことがわかりました。
解決策:Mavenプロジェクトの場合は、プロジェクトディレクトリを右クリックして、[maven]、[再インポート]の順にクリックします。このとき、関連する依存関係が自動的にダウンロードされます。関連する依存関係は.m2のリポジトリフォルダーにあります。前の「開発」で説明したように、通常のscalaプロジェクトの場合:プロジェクトディレクトリを右クリック=>モジュール設定を開く=>プロジェクト設定=>ライブラリ=> "+" => java => Sparkインストールディレクトリの下のjarsフォルダーを選択= >確認します。同様に、 "+" => scala sdk =>必要なscala sdk(sparkバージョンに対応するsdk)を選択=>確認します。
考え方:mavenは本当に強力です。たとえば、scalaプラグインをインストールした後は、scala JDKをインストールできません。mavenpom.xmlを使用してscalaバージョンを構成し、対応するscalaパッケージを自動的にダウンロードしてください。同じpom.xmlファイルを使用すると、誰もが同じライブラリに依存する環境で開発を行うことができます。
2.本当に必要な場合を除いて、グローバル変数、特にバッファタイプについては、どれだけ詰め込まれるかわからないため、注意が必要です。
例:
val data_set:RDD [(String、String、Int、Int)] = raw_rdd.map(generate_instance_per_line(_、
generate_instance_per_line関数では、globalListBufferグローバル変数に対して追加操作が実行され、その後、各マップが1回実行されます。
3、SparkException:構成にアプリケーション名を設定する必要があります
解決策:
実行>構成の編集...>アプリケーション> "My project name">構成、
VMオプション項目を-Dspark.master = local に設定します。
-Dspark .master = local:私のスパークプログラムがローカルモード
4で実行するように設定されていることを示し
ます。
解決策:mavenプロジェクトでビルドされたパッケージには、提供とコンパイルの2つのモードがあります。提供が使用されます:動作環境には対応するパッケージがすでにあるため、ビルド中に関連パッケージをパッケージ化する必要がなく、jarパッケージのサイズを削減できます。ローカルで実行する場合は、準拠するためにプロビジョンを変更する必要があります。またはIDEAはより便利な方法を提供します: