在 Spark EMR notebook 中开发多文件 Scala 包

Developing a multi-file Scala package in Spark EMR notebook

我基本上是在寻找一种在 EMR 中进行基于 Spark 的 Scala 开发的方法。所以我在 hadoop 集群上有几个项目文件:

// mypackage.scala
package mypackage

<Spark-dependent scala code> 
// subpackage.scala
package mypackage.subpackage

def myfunc(x: String) {
...
}
<more Spark-dependent scala code> 

我希望能够即时编辑这些脚本,然后将更改导入我的 EMR 笔记本。

// EMR_notebook.ipynb
import mypackage.subpackage.myfunc
val output = myfunc('foo')

我明白

  1. 一般需要用sbt编译scala代码才能使用,并且
  2. 将修改后的 Scala 代码导入 EMR notebook 的最佳方式是通过 jarfile,即
%%configure -f
{ 
    "jars": ["s3://path_to_myproject_jarfile.jar"]
}

但这意味着要调试我的包,我必须修改脚本 mypackage.scala 和 subpackage.scala,然后用 sbt 编译,然后上传到 s3,然后重新启动 Spark 内核,这样我可以重新导入 jarfile,然后才能重新 运行 我的代码并查看任何更改的效果。所以我希望有一个更有效的方法来处理这种情况。

对任何 ambiguity/scala 文盲表示歉意。谢谢!

是的,你是对的。这也是我唯一知道的方法。但这正是他们拥有 spark-shell 的原因,如果您使用 Databricks 之类的东西或者甚至登录到 emr,请打开 spark-shell 和 运行 您的位以在那里检查。