spark-shell无法解析以点/句点开头的Scala行

sta*_*010 4 scala apache-spark

每当我在网上找到一些Scala/Spark代码时,我想直接将它粘贴到spark-shell中进行试用.(我在CentOS和Mac OS上都使用Spark-shell和Spark 1.6.)

通常,这种方法效果很好,但是当行以点/句点开始时(表示继续的方法调用),我总是遇到问题.如果我将点移动到上一行,它就可以工作.

示例:以下是我在网上找到的一些代码:

val paramMap = ParamMap(lr.maxIter -> 20)
  .put(lr.maxIter, 30) 
  .put(lr.regParam -> 0.1, lr.threshold -> 0.55)
Run Code Online (Sandbox Code Playgroud)

所以当我将它直接粘贴到spark-shell中时,我看到了这个错误:

scala> val paramMap = ParamMap(lr.maxIter -> 20)
paramMap: org.apache.spark.ml.param.ParamMap = 
{
    logreg_d63b85553548-maxIter: 20
}

scala>   .put(lr.maxIter, 30) 
<console>:1: error: illegal start of definition
         .put(lr.maxIter, 30) 
         ^

scala>   .put(lr.regParam -> 0.1, lr.threshold -> 0.55)
<console>:1: error: illegal start of definition
         .put(lr.regParam -> 0.1, lr.threshold -> 0.55)
         ^
Run Code Online (Sandbox Code Playgroud)

但是,当我将点移动到前一行时,一切都很好.

scala> val paramMap = ParamMap(lr.maxIter -> 20).
     | put(lr.maxIter, 30).
     | put(lr.regParam -> 0.1, lr.threshold -> 0.55)
paramMap: org.apache.spark.ml.param.ParamMap = 
{
    logreg_d63b85553548-maxIter: 30,
    logreg_d63b85553548-regParam: 0.1,
    logreg_d63b85553548-threshold: 0.55
}
Run Code Online (Sandbox Code Playgroud)

有没有办法配置spark-shell,以便它接受以点开头的行(或等效地,即使它们不以点结尾也会继续行)?

som*_*ytt 6

必须没有领先的空白.

scala> "3"
res0: String = 3

scala> .toInt
res1: Int = 3

scala> "3"
res2: String = 3

scala>   .toInt
<console>:1: error: illegal start of definition
  .toInt
  ^
Run Code Online (Sandbox Code Playgroud)

PS:当检测到点时,它可能会忽略空白.一个JIRA是对加关注这里.