sbt-idea-入門と構成
20780 ワード
Java環境構成
これは言うまでもなく、これが前提条件です.自分でインストールしてから正しく構成してください.分からない場合はjava環境変数の構成に関する問題を自分で検索してください.
Scala構成
まずscala環境を構成します.公式アドレスからダウンロードします.ここではscala 2を使用します.10.6バージョンなので、ここから対応するプラットフォームバージョンをダウンロードします.Windowsはscala-2.10.6をダウンロードしてください.zip、MacOS、Linuxはscala-2.10.6をダウンロードしてください.tgz .
ダウンロードが完了したら、ディレクトリに解凍し、環境変数
Windows環境
LinuxおよびMac環境
ここでは、
Bash環境
bash環境では
その後、
Zsh環境
端末bashがzshを使用している場合は、
Sbt構成
公式アドレスは、ここからダウンロードし、MacOSであれば、ここで提示した方法で素早くインストールできますが、他のプラットフォームや手動で構成したい場合は、ここをクリックして直接ダウンロードすればいいです.
ダウンロードが完了し、解凍され、フォルダ
Windows環境
もし私たちが
LinuxまたはMac環境
ここでは、
Bash環境
その後、
Zsh環境
サンプルプログラム
プロジェクト構造
フォルダを任意の場所に作成します.名前は
build.sbtファイルには、次の内容が追加されています(行ごとに空の行で区切られることに注意してください).
WordCount.scalaファイルの内容:
build.propertiesファイルの内容:
plugins.sbtファイルは空のままにします.
これで、sbtメカニズムのプロジェクトを作成しました.
次に、sbtダウンロード依存を使用してideaを使用してsbtプロジェクトを作成し、ideaでsbt管理のspark appをどのように実行するかについて説明します.
Sbtの基本使用
上にsbtで管理されているspark appプロジェクトを作成しました.sparkで実行するにはjarパッケージにパッケージする必要があります.sbt自体やプラグインでこのような機能が提供されています.
パッケージの適用
コマンドラインを開き、プロジェクトディレクトリの下に切り替え、
[info] Done packaging. [success] Total time: 11 s, completed 2016-5-11 12:32:09
文字は、パッケージが成功したことを示しており、打たれたjarパッケージは上のログで見つけることができます.
サードパーティjar統合パッケージ
アプリケーションを書くときは、
sbt自体はこのような機能を提供していませんが、対応するプラグインでこの操作を完了することができます.上に
その後、sbtインタラクティブ環境に再アクセスし、
[info] Done packaging. [success] Total time: 41 s, completed 2016-5-11 13:36:37
これにより、依存するサードパーティクラスライブラリをjarパッケージにパッケージ化することに成功しました.具体的なパッケージのファイルは、上のログに表示されます.
ideaを使用してsbtプロジェクトを作成する
プラグインのインストール
ideaを使用してsbtプロジェクトを作成するには、
sbtプロジェクトの作成
File->New->Project...プロジェクト作成ウィザードを開きます.作成が完了したら、ideaがプロジェクトをリフレッシュするのを待っています.ディレクトリ構造は次のようになります(project/projectとtargetの関連はリストされていません). である. を設定できます. を格納 を格納 を格納するために使用される.
ここでは、最初に作成したプロジェクトを使用し、ideaインポート機能を使用して、File->Openプロジェクトディレクトリを見つけて開くことができます.
これはなぜですか.なぜなら、
後ろの
ソリューションはまだあります.sbtはmaven(プロジェクト管理のソフトウェアでもあります)と同じように、モジュール開発機能を提供しています.私たちは2つのモジュールを定義しています.1つのモジュールは私たちが作ったもので、もう1つは実行に使用されています.この中には実行時クラスライブラリが含まれています.構成は以下の通りです. に移動します.プロジェクトルートディレクトリの下に を作成する.プロジェクトルートディレクトリの
サブプロジェクト
サブプロジェクト
運転パラメータを以下の図に設定します.次に、上の運転構成を選択して、運転すればいいです.ここで異常が発生する可能性があります.
これは、変更mainファイルの場所を変更したため、ファイルが見つからないため、自分で存在するファイルパスに設定するか、
Sbtローカル依存ライブラリ保管場所構成
時間を割いてから補うのは、実は接続を確立して、まず自分で案を考えます.
これは言うまでもなく、これが前提条件です.自分でインストールしてから正しく構成してください.分からない場合はjava環境変数の構成に関する問題を自分で検索してください.
Scala構成
まずscala環境を構成します.公式アドレスからダウンロードします.ここではscala 2を使用します.10.6バージョンなので、ここから対応するプラットフォームバージョンをダウンロードします.Windowsはscala-2.10.6をダウンロードしてください.zip、MacOS、Linuxはscala-2.10.6をダウンロードしてください.tgz .
ダウンロードが完了したら、ディレクトリに解凍し、環境変数
SCALA_HOME
を構成し、scalaの解凍後の絶対パスをSCALA_HOME
に構成し、PATH
の構成を追加します.以下、WIndowsとLinuxの例として、ここで解凍したフォルダがscala-2.10.6
である場合を挙げる.Windows環境
scala-2.10.6
フォルダがC:\
ディレクトリの下に置かれている場合、SCALA_HOME
の値がC:\scala-2.10.6
に追加され、PATH
という環境変数が見つかり、既存の値の後に;%SCALA_HOME%\bin
(前のセミコロンに注意)を追加し、新しいコマンドラインウィンドウを再開すれば操作できます.Windows環境変数に関する他の説明は自分で脳を補うので、ここではくどくどしません.LinuxおよびMac環境
ここでは、
scala-2.10.6
のscalaディレクトリが/usr/local/
の下に格納されていると仮定し、絶対パスは/usr/local/scala-2.10.6
である.Bash環境
bash環境では
~/.bashrc
または/etc/profile
ファイルを修正し、内容を追加できます.1
2
3
4
SCALA_HOME=/usr/local/scala-2.10.6
PATH=$PATH:$SCALA_HOME/bin
export SCALA_HOME PATH
その後、
source ~/.bashrc
またはsource /etc/profile
を実行すればよい.Zsh環境
端末bashがzshを使用している場合は、
~/.zshrc
ファイルに上記の内容を追加し、source ~/.zshrc
を実行する必要があります.Sbt構成
公式アドレスは、ここからダウンロードし、MacOSであれば、ここで提示した方法で素早くインストールできますが、他のプラットフォームや手動で構成したい場合は、ここをクリックして直接ダウンロードすればいいです.
ダウンロードが完了し、解凍され、フォルダ
sbt
が得られる.Windows環境
もし私たちが
sbt
フォルダをC:\
ディレクトリの下に置いたら.新規環境変数SBT_HOME
の値はC:\sbt
であり、PATH
の変数値の後に;%SBT_HOME%\bin
を追加し、新しいコマンドラインウィンドウを再開すればよい.LinuxまたはMac環境
ここでは、
sbt
ディレクトリを/usr/local/
ディレクトリの下に配置したと仮定します.上記のscala環境変数と同じです.Bash環境
~/.bashrc
または/etc/profile
を編集し、次の内容を追加します.1
2
3
4
SBT_HOME=/usr/local/sbt
PATH=$PATH:$SBT_HOEM/bin
export SBT_HOME PATH
その後、
source ~/.bashrc
またはsource /etc/profile
を実行すると有効になります.Zsh環境
~/.zshrc
を編集し、上記の内容を追加して保存した後、source ~/.zshrc
を実行すると有効になります.サンプルプログラム
プロジェクト構造
フォルダを任意の場所に作成します.名前は
spark-sbt-demo
で、次はディレクトリ構造です.1
2
3
4
5
6
7
8
9
spark-sbt-demo
├── build.sbt
├── project
│ ├── build.properties
│ └── plugins.sbt
└── src
├── main
├── scala
└── WordCount.scala
build.sbtファイルには、次の内容が追加されています(行ごとに空の行で区切られることに注意してください).
1
2
3
4
5
6
7
8
9
10
11
name := "spark-sbt-demo"
version := "1.0"
scalaVersion := "2.10.6"
organization := "spark.demo"
version := "1.0.0-SNAPSHOT"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided"
WordCount.scalaファイルの内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by sdvdxl on 16/5/11.
*/
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("spark-sbt-demo").setMaster("local[*]")
val sc = new SparkContext(conf)
sc.textFile("src/main/scala/WordCount.scala").flatMap(_.split(" ")).map(word=>(word,1)).reduceByKey(_+_).foreach(println)
sc.stop()
}
}
build.propertiesファイルの内容:
1
sbt.version = 0.13.11
plugins.sbtファイルは空のままにします.
これで、sbtメカニズムのプロジェクトを作成しました.
次に、sbtダウンロード依存を使用してideaを使用してsbtプロジェクトを作成し、ideaでsbt管理のspark appをどのように実行するかについて説明します.
Sbtの基本使用
上にsbtで管理されているspark appプロジェクトを作成しました.sparkで実行するにはjarパッケージにパッケージする必要があります.sbt自体やプラグインでこのような機能が提供されています.
パッケージの適用
コマンドラインを開き、プロジェクトディレクトリの下に切り替え、
sbt
を入力した後、sbtのインタラクションに入り、package
を入力してパッケージを開始します.[info] Done packaging. [success] Total time: 11 s, completed 2016-5-11 12:32:09
文字は、パッケージが成功したことを示しており、打たれたjarパッケージは上のログで見つけることができます.
サードパーティjar統合パッケージ
アプリケーションを書くときは、
spark
自体のjarパッケージだけでなく、他のサードパーティクラスライブラリも多く使用されます.では、spark実行にアプリケーションをコミットするときは、これらのサードパーティ依存も一緒にコミットする必要があります.そうしないと、クラスが見つからないという問題が発生します.依存が少ない場合は、これらのjarパケットを直接1つずつ提出しても問題ありませんが、大量のクラスライブラリに依存すると、この方法は明らかに非効率で骨が折れるので、どのようにしてこれらのサードパーティ依存をjarパケットにすることができますか?sbt自体はこのような機能を提供していませんが、対応するプラグインでこの操作を完了することができます.上に
plugins.sbt
のファイルの内容が空いているのを覚えていますか?このファイルでは、特定の機能を完了するプラグインを構成できます.次に、次の内容を追加します.1
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.2")
その後、sbtインタラクティブ環境に再アクセスし、
assemblyPackageDependency
を入力して車に戻ります.後で、次のような出力が表示されます.[info] Done packaging. [success] Total time: 41 s, completed 2016-5-11 13:36:37
これにより、依存するサードパーティクラスライブラリをjarパッケージにパッケージ化することに成功しました.具体的なパッケージのファイルは、上のログに表示されます.
ideaを使用してsbtプロジェクトを作成する
プラグインのインストール
ideaを使用してsbtプロジェクトを作成するには、
scala
およびsbt
プラグインをインストールする必要があります.ideaのプリファレンスを開き、Plugins
を見つけ、Browser repositores...
ボタンをクリックし、scala
を入力して検索し、scala
とsbt
のプラグインを見つけてインストールします.下図に示すように、インストールが完了したらideaを再起動します.sbtプロジェクトの作成
File->New->Project...プロジェクト作成ウィザードを開きます.作成が完了したら、ideaがプロジェクトをリフレッシュするのを待っています.ディレクトリ構造は次のようになります(project/projectとtargetの関連はリストされていません).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
spark-sbt-demo
├── build.sbt
├── project
│ ├── build.properties
│ └── plugins.sbt
└── src
├── main
│ ├── java
│ ├── resources
│ ├── scala
│ └── scala-2.11
└── test
├── java
├── resources
├── scala
└── scala-2.11
plugins.sbt
ファイル配置プラグイン構成build.sbt
は、全体のプロジェクト構成情報build.properties
sbtバージョンjava
ディレクトリjavaファイルscala
ディレクトリにscalaファイルresources
ディレクトリは、プロファイルtest
関連ディレクトリは、ideaでspark appを実行するテスト関連ファイルを格納するために使用されます.ideaプロジェクトウィザードを使用してsbtプロジェクトを作成する方法について説明しました.ideaでsbt構築のspark appを直接実行する方法について説明します.ここでは、最初に作成したプロジェクトを使用し、ideaインポート機能を使用して、File->Openプロジェクトディレクトリを見つけて開くことができます.
WordCount.scala
ファイルで右クリックし、Run WordCount
を選択して実行を開始しますが、結果は望ましくない場合があります.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
at WorldCount$.main(WorldCount.scala:8)
at WorldCount.main(WorldCount.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.SparkConf
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
Process finished with exit code 1
これはなぜですか.なぜなら、
build.sbt
で構成されたspark依存性は、1
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided"
後ろの
provided
に気づきましたか?この代表はパッケージ化や実行時にこのjarパッケージのファイルを含まない(注意:spark appはspark関連のjarパッケージを含まないように要求する).これにより、ideaでspark appをデバッグしたり実行したりすることができません.ソリューションはまだあります.sbtはmaven(プロジェクト管理のソフトウェアでもあります)と同じように、モジュール開発機能を提供しています.私たちは2つのモジュールを定義しています.1つのモジュールは私たちが作ったもので、もう1つは実行に使用されています.この中には実行時クラスライブラリが含まれています.構成は以下の通りです.
main
というフォルダを作成し、プロジェクトのsrc
フォルダをこのディレクトリの下run
というフォルダbuild.sbt
ファイルを修正します.内容は次のとおりです.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
name := "spark-sbt-demo"
version := "1.0"
scalaVersion := "2.10.4"
organization := "spark.demo"
version := "1.0.0-SNAPSHOT"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided"
lazy val root = (project in file(".")).aggregate(main, run)
lazy val main = (project in file("main"))
lazy val run = (project in file("run")).dependsOn(main)
main
で作成されたbuild.sbt
の内容は、次のとおりです.1
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided"
run
で作成されたbuild.sbt
の内容は、次のとおりです.1
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1"
1
2
3
4
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/Users/du/workspace/hekr/spark-sbt-demo/src/main/scala/WorldCount.scala
at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:251)
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270)
......
これは、変更mainファイルの場所を変更したため、ファイルが見つからないため、自分で存在するファイルパスに設定するか、
main/src/main/scala/WorldCount.scala
に変更して再実行すれば成功します.Sbtローカル依存ライブラリ保管場所構成
時間を割いてから補うのは、実は接続を確立して、まず自分で案を考えます.