gpt4 book ai didi

scala - Spark shell : strange behavior with import

转载 作者:行者123 更新时间:2023-12-02 20:30:16 24 4
gpt4 key购买 nike

我正在 Spark-shell 中工作(Spark 版本 2.1.0,使用 Scala 版本 2.11.8,OpenJDK 64 位服务器 VM,1.7.0_151)。

我导入Column类:

scala> import org.apache.spark.sql.Column
import org.apache.spark.sql.Column

我可以定义一个Column对象:

scala> val myCol: Column = col("blah")
myCol: org.apache.spark.sql.Column = blah

并在函数定义中使用Column:

scala> def myFunc(c: Column) = ()
myFunc: (c: org.apache.spark.sql.Column)Unit

到目前为止一切顺利。但是定义类时,找不到Column:

scala> case class myClass(c: Column)
<console>:11: error: not found: type Column
case class myClass(c: Column)

但是单行文字的工作原理是:

scala> case class myClass(c: org.apache.spark.sql.Column)
defined class myClass

scala> import org.apache.spark.sql.Column; case class myClass(c: Column)
import org.apache.spark.sql.Column
defined class myClass

最佳答案

这是Spark issue .
它适用于 Spark 1.6,但该问题在 Spark 2.1.0 或更高版本中仍然存在。

根本原因:

Classes defined in Shell are inner classes, and therefore cannot be easily instantiated by reflection. They need an additional reference to the outer object, which is non-trivial to obtain.

作为解决方法,请尝试在 Spark-shell 中使用 :paste

关于scala - Spark shell : strange behavior with import,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com