0
スパークのREPL(スパーク2.0.0)は、次のエラーを投げることになる理由を任意のアイデア:使用した場合の値が見つからない:スパークのScalaのREPLでの負荷
scala> :load ../StatsWithMissing.scala
Loading ../StatsWithMissing.scala...
import org.apache.spark.util.StatCounter
defined class NAStatCounter
<console>:22: error: illegal start of statement (no modifiers allowed here)
override def toString: String =
^
<console>:26: error: not found: value stats
"stats " + stats.toString + "NaN " + missing
<console>:26: error: not found: value missing
"stats " + stats.toString + "NaN " + missing
<console>:1: error: eof expected but '}' found.
}
^
defined object NAStatCounter
warning: previously defined class NAStatCounter is not a companion to object NAStatCounter.
Companions must be defined together; you may wish to use :paste mode for this.
<console>:27: error: value add is not a member of NAStatCounter
def apply(x: Double) = new NAStatCounter().add(x)
次のファイルをロードする場合:
import org.apache.spark.util.StatCounter
class NAStatCounter extends Serializable
{
val stats: StatCounter = new StatCounter()
var missing: Long = 0
def add(x: Double): NAStatCounter =
{
if (java.lang.Double.isNaN(x))
missing += 1
else
stats.merge(x)
this
}
def merge(other: NAStatCounter): NAStatCounter =
{
stats.merge(other.stats)
missing += other.missing
this
}
override def toString: String =
{
"stats " + stats.toString + "NaN " + missing
}
}
object NAStatCounter extends Serializable
{
def apply(x: Double) = new NAStatCounter().add(x)
}
を
:Load ../StatsWithMissing.scala
を使用すると、エラーを生成しますが、NAStatCounterを作成しようとしたとき、私は次のエラーを取得できません:
scala> :paste ../StatsWithMissing.scala
Pasting file ../StatsWithMissing.scala...
import org.apache.spark.util.StatCounter
defined class NAStatCounter
defined object NAStatCounter
scala> val nas1 = NAStatCounter(10.0)
<console>:28: error: reference to NAStatCounter is ambiguous;
it is imported twice in the same scope by
import $line48$read.NAStatCounter
and import INSTANCE.NAStatCounter
val nas1 = NAStatCounter(10.0)
^
は異なるエラーをもたらす: インポートorg.apache.spark.util.StatCounter:13:エラー:見つかりません:タイプスタッツ ヴァル統計:スタッツ=新しいスタッツ() :13:エラー:見つかりません:タイプスタッツ ヴァル統計:スタッツは=新しいスタッツ() :26:エラー:見つかりません:タイプNAStatCounter をDEF(X:ダブル)が適用されます。新しいNAStatCounter(=)、実際に(X) –
Ikhalaf
を追加使用して':paste'は、ブレースの問題とコンパニオンの定義を修正します。スパークシェルが正しくインポートを行っているバグにぶつかっているかもしれません。私は後で試してみる。誰かが最初に答えない限り。 –
修正:両方の問題を修正しました。この時点で私はなぜこれが好奇心から起こっているのか理解しようとしています。ありがとうございました。 – Ikhalaf