我有一些功能可以在一堆非常长的包中扩展SparkContext
,对于spark-shell和Zeppelin(以及Jupyter ...),我希望用户提供一个单独的import-all
所以,我希望用户可以做类似
的事情import myext._
在幕后,它会做
import something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
import something.different.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
// more
这是可能的,如果是的话,怎么样?
或者我必须写一个像这样的“帮助对象”:
import something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
import something.different.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
package object myext {
implicit class MyExtHelper(sc: SparkContext) {
def somethingFromLib1 = sc.somethingFromLib1
def somethingFromLib2 = sc.somethingFromLib2
// more
}
}
答案 0 :(得分:1)
是的,最好的方法是提供一个帮助对象。请注意,它可以包含类型别名,如type Foo[A] = something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell.Foo[A]
以及方法,隐式转换等。不幸的是,我没有办法(我知道)以这种方式提供通配符导入;你必须为你想要公开的包的每个成员添加成员到helper对象。