-
まずScalaプラグインをインストールします。File → Settings → PluginsでScalaプラグインを検索し、Installをクリックしてインストールします。
-
File → New Project → Mavenを選択し、新しいMavenプロジェクトを作成します。GroupIdとArtifactIdを入力します。
-
pom.xmlファイルを編集し、プロジェクトに必要な依存関係を追加します:
<properties>
<scala.version>2.11.12</scala.version>
<hadoop.version>2.7.7</hadoop.version>
</properties>
<repositories>
<repository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>spark-packages</id>
<name>Spark Packages Repository</name>
<url>https://dl.bintray.com/spark-packages/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.8</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.8</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>2.4.8</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
-
File → Project Structure → Librariesで、Spark実行環境と一致するScalaバージョンを選択します。
-
File → Project Structure → Modulesで、src/main/の下にscalaフォルダを追加し、sourceフォルダとして設定します。
-
scalaフォルダの下に新しいscalaファイルClusterDemoを作成します:
import org.apache.spark.{SparkConf, SparkContext}
import scala.util.Random
object ClusterDemo {
def main(args: Array[String]): Unit = {
// Spark設定の初期化
val configuration = new SparkConf()
.setAppName("ClusterDemo")
.setMaster("spark://master:7077")
.setJars(Seq(System.getProperty("user.dir") + "/target/ClusterDemo.jar"))
val sparkContext = new SparkContext(configuration)
// パーティション数の設定
val partitionCount = if (args.length > 0) args(0).toInt else 4
println("開始時刻: " + sparkContext.startTime)
// 計算対象の数値
val totalPoints = math.min(1000000L * partitionCount, Int.MaxValue).toInt
// 円周率の計算
val insideCircle = sparkContext.parallelize(1 to totalPoints, partitionCount).map { _ =>
val x = Random.nextDouble() * 2 - 1
val y = Random.nextDouble() * 2 - 1
if (x * x + y * y < 1) 1 else 0
}.reduce(_ + _)
// 円周率の推定値
val estimatedPi = 4.0 * insideCircle / totalPoints
println(f"推定円周率: $estimatedPi%.6f")
// Sparkコンテキストの停止
sparkContext.stop()
}
}
- File → Project Structure → Artifactsで、Jar → From modules with dependencies...を選択し、Main Classを設定します。
Output directoryを設定し、不要なjarを削除します。
- Build → Build Artifacts...を実行してjarを生成し、その後実行すると成功します!