【问题标题】:Developing a multi-file Scala package in Spark EMR notebook在 Spark EMR 笔记本中开发多文件 Scala 包
【发布时间】:2021-11-26 19:16:11
【问题描述】:

我基本上是在寻找一种在 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 笔记本的最佳方法是通过 jarfile,即
%%configure -f
{ 
    "jars": ["s3://path_to_myproject_jarfile.jar"]
}

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

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

【问题讨论】:

    标签: scala apache-spark jar sbt amazon-emr


    【解决方案1】:

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

    【讨论】:

    • 好的,如果这是唯一的方法,那可以简化我的选择。我想最好的选择是将基础包的jarfile导入到spark shell中,然后直接粘贴我要编辑的特定脚本的新版本。
    猜你喜欢
    • 2017-12-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2020-04-02
    相关资源
    最近更新 更多