gpt4 book ai didi

apache-spark - 带有 jar 的 Spark 工作流程

转载 作者:行者123 更新时间:2023-12-01 13:51:36 25 4
gpt4 key购买 nike

我试图了解必须编译 jar 才能使用 Spark 的范围。

我通常会在 IDE 中编写临时分析代码,然后通过单击(在 IDE 中)在本地针对数据运行它。如果我对 Spark 的实验给出了正确的指示,那么我必须将我的脚本编译成一个 jar,并将它发送到所有 Spark 节点。 IE。我的工作流程是

  1. 编写分析脚本,它将上传自己的 jar(已创建下面)
  2. 去做 jar 。
  3. 运行脚本。

对于临时迭代工作,这似乎有点多,而且我不明白没有它 REPL 是如何逃脱的。

更新:

这是一个例子,除非我将它编译成一个 jar 并执行 sc.addJar,否则我无法开始工作。但我必须这样做这一事实似乎很奇怪,因为只有普通的 Scala 和 Spark 代码。

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.SparkFiles
import org.apache.spark.rdd.RDD

object Runner {
def main(args: Array[String]) {
val logFile = "myData.txt"
val conf = new SparkConf()
.setAppName("MyFirstSpark")
.setMaster("spark://Spark-Master:7077")

val sc = new SparkContext(conf)

sc.addJar("Analysis.jar")
sc.addFile(logFile)

val logData = sc.textFile(SparkFiles.get(logFile), 2).cache()

Analysis.run(logData)
}
}

object Analysis{
def run(logData: RDD[String]) {
val numA = logData.filter(line => line.contains("a")).count()
val numB = logData.filter(line => line.contains("b")).count()
println("Lines with 'a': %s, Lines with 'b': %s".format(numA, numB))
}
}

最佳答案

您正在使用“过滤器”创建匿名函数:

scala> (line: String) => line.contains("a")
res0: String => Boolean = <function1>

除非将 jar 分发给工作人员,否则该函数的生成名称不可用。 worker 上的堆栈跟踪是否突出显示了缺失的符号?

如果您只想在本地调试而不必分发 jar,您可以使用“本地”主机:

val conf = new SparkConf().setAppName("myApp").setMaster("local")

关于apache-spark - 带有 jar 的 Spark 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com