Scala Spark跨所有节点的共享连接

时间:2017-01-13 10:57:51

标签: postgresql scala apache-spark

我想从spark DF写一些数据到postgres。在堆栈上搜索后,我找到了最简单的方法 - 每次使用我准备好的语句时打开连接 - 这样可以正常工作。但我希望通过所有节点共享变量。 我从这里得到了一些代码:https://www.nicolaferraro.me/2016/02/22/using-non-serializable-objects-in-apache-spark/并写了这个:

class SharedVariable[T](constructor: => T) extends AnyRef with Serializable {
   @transient private lazy val instance: T = constructor
   def get = instance 
}

object SharedVariable {
    def apply[T](constructor: => T): SharedVariable[T] = new SharedVariable[T](constructor)}

val dsv = SharedVariable {
   val ds = new BasicDataSource()
   ds.setDriverClassName("org.postgresql.Driver")
   ds.setUrl("jdbc:postgresql://...")
   ds.setUsername("user")
   ds.setPassword("pass")
ds}

但是我收到了一个错误:

error: reference to SharedVariable is ambiguous;
it is imported twice in the same scope by
import $line1031857785174$read.SharedVariable
and import INSTANCE.SharedVariable val dsv = SharedVariable {

有人可以帮助我吗?

0 个答案:

没有答案