Работа с кластером на языке Scala
reysand - 3 июля, 2025 - 13:36
В начале инициализируйте Spark-сессию:
import org.apache.spark.sql.SparkSession val spark = SparkSession.builder.appName("SparkPi").getOrCreate()
В конце программы обязательно завершайте сессию:
spark.stop()
Пример программы на Scala (./src/main/scala/SparkPi.scala):
package org.apache.spark.examples import scala.math.random import org.apache.spark.sql.SparkSession /** Computes an approximation to pi */ object SparkPi { def main(args: Array[String]): Unit = { val spark = SparkSession .builder .appName("Spark Pi") .getOrCreate() val slices = if (args.length > 0) args(0).toInt else 2 val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow val count = spark.sparkContext.parallelize(1 until n, slices).map { i => val x = random * 2 - 1 val y = random * 2 - 1 if (x*x + y*y <= 1) 1 else 0 }.reduce(_ + _) println(s"Pi is roughly ${4.0 * count / (n - 1)}") spark.stop() } }
Сборка приложения:
./build.sbt:
name := "Spark Pi" version := "1.0" scalaVersion := "2.12.18" libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.5.5"
sbt package
Запуск программы на кластере:
spark-submit --jars /opt/spark-plugins/rapids-4-spark_2.12-25.06.0.jar --class "SparkPi" spark-pi_2.12-1.0.jar
- 14 просмотров