【问题标题】:Why spark shell throwing error, when i try to create variable with name "org"?当我尝试创建名称为“org”的变量时,为什么会引发 shell 抛出错误?
【发布时间】:2019-11-28 03:02:03
【问题描述】:

我尝试在 spark shell(Scala 版本 2.10.5) 中创建名称为“org”的变量/val,但抛出错误

我尝试了 var 和 val。

 var org = List(1)

错误:值 apache 不是 List[Int] 的成员 org.apache.spark.sql.catalyst.encoders.OuterScopes.addOuterScope(this)

【问题讨论】:

  • 这是你的全部剧本吗?看起来你在下面的某个地方尝试 import org.apache..... 并且你的局部变量 org 打破了它。
  • @Thilo ,我刚启动 spark-shell 然后执行 var org = List(1).
  • 嗯,可能是 spark-shell 中的一个错误。似乎它想在内部调用org.apache.spark.sql.catalyst.encoders.OuterScopes.addOuterScope。只需将变量称为其他名称即可。

标签: scala variables spark-shell


【解决方案1】:

好吧,我可以创建列表,名称为“org”的数据框

scala> val org = List(1)
org: List[Int] = List(1)

scala> var org = List(1)
org: List[Int] = List(1)

scala>

scala>

scala> val org = Seq((1,2,3), (2,3,4)).toDF()
org: org.apache.spark.sql.DataFrame = [_1: int, _2: int ... 1 more field]

scala> org
res0: org.apache.spark.sql.DataFrame = [_1: int, _2: int ... 1 more field]

scala> org.show
+---+---+---+
| _1| _2| _3|
+---+---+---+
|  1|  2|  3|
|  2|  3|  4|
+---+---+---+

我使用的是 spark 版本 2.2.0 和 scala 2.11.8。我认为这个问题可能会在最新版本中得到纠正。但我知道您不能使用某些保留关键字创建值或变量。例如

scala> val new = Seq((1,2)(2,3)).toDF()
<console>:1: error: illegal start of simple pattern
val new = Seq((1,2)(2,3)).toDF()

'org' 可能是以前版本中的关键字。希望对您有所帮助...!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多