IntelliJ IDEAでSparkクラスタに接続する方法

  1. まずScalaプラグインをインストールします。File → Settings → PluginsでScalaプラグインを検索し、Installをクリックしてインストールします。

  2. File → New Project → Mavenを選択し、新しいMavenプロジェクトを作成します。GroupIdとArtifactIdを入力します。

  3. 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>
  1. File → Project Structure → Librariesで、Spark実行環境と一致するScalaバージョンを選択します。

  2. File → Project Structure → Modulesで、src/main/の下にscalaフォルダを追加し、sourceフォルダとして設定します。

  3. 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()
  }
}
  1. File → Project Structure → Artifactsで、Jar → From modules with dependencies...を選択し、Main Classを設定します。

Output directoryを設定し、不要なjarを削除します。

  1. Build → Build Artifacts...を実行してjarを生成し、その後実行すると成功します!

タグ: IntelliJ IDEA Spark Scala Maven Hadoop

7月7日 20:25 投稿