7
下のサンプルコードは、Advanced Analytics with Sparkの刊行物です。私はそれはそれはスタッツを見つけることができないことを示す、次のエラーを与える火花シェル(バージョン1.4.1)にそれをロードすると:スパークシェルでこのサンプルコードが読み込まれないのはなぜですか?
import org.apache.spark.util.StatCounter
<console>:9: error: not found: type StatCounter
val stats: StatCounter = new StatCounter()
^
<console>:9: error: not found: type StatCounter
val stats: StatCounter = new StatCounter()
^
<console>:23: error: not found: type NAStatCounter
def apply(x: Double) = new NAStatCounter().add(x)
私はちょうど火花シェルで次のような場合は問題はありません:スパーク・シェルでloadコマンド:
scala> import org.apache.spark.util.StatCounter
import org.apache.spark.util.StatCounter
scala> val statsCounter: StatCounter = new StatCounter()
statsCounter: org.apache.spark.util.StatCounter = (count: 0, mean: 0.000000, stdev: NaN, max: -Infinity, min: Infinity)
問題がとのようです。私はあなたとまったく同じ問題を抱えている
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 = {
"stats: " + stats.toString + " NaN: " + missing
}
}
object NAStatCounter extends Serializable {
def apply(x: Double) = new NAStatCounter().add(x)
}
のパスがわからないシステムである理由は、クラスでそのライブラリであるあなたがしようとしたとして、それを解決する
INTO
CHANGE
パス?そのライブラリの場所を教えて、あなたのlibパスを出力できますか? –
私はそれを宣言してもStatCounterを完全に修飾しなければならないことがわかりました: 'val stats:org.apache.spark.util.StatCounter = new org.apache.spark.util.StatCounter()' –
デフォルトではクラスパスです。上の中間コードブロックのスパークシェルからの2つのラインの例は、それを示しています。ファイルを読み込むときに問題が発生したときです。 –