【问题标题】:Passing sqlContext as an implicit parameter in Spark将 sqlContext 作为 Spark 中的隐式参数传递
【发布时间】:2016-11-24 18:11:27
【问题描述】:

我在具有以下签名的 Scala 对象中有一个函数

def f(v1:Int)(implicit sqlContext: SQLContext)

当我尝试从 spark-shell 调用此函数时,我将其称为

f(1)

我希望现有的 sqlContext 会隐式传递给它,但事实并非如此。我怎样才能让它工作,以便 sqlContext 自动传递给这个函数?

-------------更新-------

在调用我的函数之前,我尝试在 spark-shell 中导入 sqlContext.implicits._ 但没有帮助

【问题讨论】:

  • 我也遇到了同样的问题,你最后解决了吗?

标签: scala apache-spark


【解决方案1】:

您只需将SQLContext 隐式添加到您调用函数的同一上下文中:

implicit val sqlContext = new SQLContext() // just an example
// and then
f(1)

如果你使用的是 apacha Spark,你可以使用这个导入:

import sqlContext.implicits._

【讨论】:

  • 但它扼杀了整个目的。我试图让它对用户不可见,所以用户调用我的函数而不将 sqlContext 定义为隐式,否则我可以将 sqlContext 作为普通参数传递。
  • 我尝试在 spark-shell 中导入它,但没有帮助!
  • 用户必须以某种方式提供上下文。我假设您使用的是 Spark,是吗?
  • 无论如何,您可以在其他地方定义SQLContext,您的用户只需要导入您的代码而不是自己定义它。
  • 我编辑了我的问题,你能看看吗?实际上导入 sqlContext.implicits._ 没有帮助。
猜你喜欢
  • 2011-07-27
  • 2020-02-13
  • 2015-09-11
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多