Spark Run本地设计模式

现在,许多Spark应用程序已成为遗留应用程序,很难在本地进行增强,测试和运行。

Spark具有很好的测试支持,但仍有许多Spark应用程序不可测试。

当您尝试运行一些旧的Spark应用程序时,我将分享一个常见错误。

Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:376)
	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2509)
	at org.apache.spark.sql.SparkSession$Builder$anonfun$6.apply(SparkSession.scala:909)
	at org.apache.spark.sql.SparkSession$Builder$anonfun$6.apply(SparkSession.scala:901)
	at scala.Option.getOrElse(Option.scala:121)

当您看到这样的错误时,您有两种选择:

–忘了它不能在本地运行,并继续在这种挫败中工作

–修复它以在本地运行,并向您的团队展示《 童子军规则》的示例

我将展示一个非常简单的模式,它将使您免于受挫。

def main(args: Array[String]): Unit = {

    val localRun = SparkContextBuilder.isLocalSpark
    val sparkSession = SparkContextBuilder.newSparkSession(localRun, "Happy Local Spark")

    val numbers = sparkSession.sparkContext.parallelize(Range.apply(1, 1000))

    val total = numbers.sum()

    println(s"Total Value ${total}")


  }

这段代码使用isLocalSpark函数来决定如何处理本地模式。 您可以使用任何技术来做出该决定,例如env参数或命令行参数或其他任何东西。

一旦知道它在本地运行,就可以基于它创建spark上下文。

现在,此代码可以在本地运行,也可以通过Spark-Submit运行。

快乐的火花测试。

火花应用

此博客中使用的代码可在@runlocal repo中获得

翻译自: https://www.javacodegeeks.com/2019/01/spark-run-local-design-pattern.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值