我正在使用Spark学习高级分析。
这里发生了什么:我按照spark-shell
上的教程,我把相当长的代码放入其中。当我关闭笔记本电脑的盖子时,这会让我的笔记本电脑进入睡眠模式,当我重新打开它时,代码就消失了。
作为一种解决方案,正如本书中所建议的那样,我正在尝试将我的代码放在.scala
文件中,并在每次重新启动JAR
时使用spark-shell
进行编译和加载。这本书甚至提供了一个简单的例子来做到这一点。 https://github.com/sryza/aas/tree/master/simplesparkproject
所以我git clone
编辑了该项目,运行mvn package
,并spark-shell
与spark-shell --jars target/simplesparkproject-0.0.1.jar --master local
一起运行,就像在方向上一样。
如果您看到此示例的git repo,则代码中包含一个对象MyApp
,其中包含两个函数。
object MyApp {
def main(args: Array[String]) {
val sc = new SparkContext(new SparkConf().setAppName("My App"))
println("num lines: " + countLines(sc, args(0)))
}
def countLines(sc: SparkContext, path: String): Long = {
sc.textFile(path).count()
}
}
根据我的理解,这个类和函数应该能够在spark-shell
中引用,因为它是为--jars
选项指定的。
但是,当我在MyApp
上输入spark-shell
时,
scala> MyApp
<console>:23: error: not found: value MyApp
MyApp
^
我做错了什么,我怎样才能做到这一点?
答案 0 :(得分:1)
只需导入对象并调用所需的方法:
import com.cloudera.datascience.MyApp
MyApp.main()