2016-09-19 7 views
1

ImはKMeansケースをhereから実行しようとしています。spark1.6.2 with scala2.10.6 TypeTagはありません

これは私のコードです:私はspark1.6.2とスカラ座でこれを実行すると

1.

def main(args: Array[String]): Unit = { 
val conf = new SparkConf().setAppName(this.getClass.getName).setMaster("local[10]")//.set("spark.sql.warehouse.dir", "file:///") 
val sc = new SparkContext(conf) 
val sqlContext = new SQLContext(sc) 
// Crates a DataFrame 
val dataset: DataFrame = sqlContext.createDataFrame(Seq(
    (1, Vectors.dense(0.0, 0.0, 0.0)), 
    (2, Vectors.dense(0.1, 0.1, 0.1)), 
    (3, Vectors.dense(0.2, 0.2, 0.2)), 
    (4, Vectors.dense(9.0, 9.0, 9.0)), 
    (5, Vectors.dense(9.1, 9.1, 9.1)), 
    (6, Vectors.dense(9.2, 9.2, 9.2)) 
)).toDF("id", "features") 

// Trains a k-means model 
val kmeans = new KMeans() 
    .setK(2) 
    .setFeaturesCol("features") 
    .setPredictionCol("prediction") 
val model = kmeans.fit(dataset) 

// Shows the result 
println("Final Centers: ") 
model.clusterCenters.foreach(println)} 

エラーフォロー:

Information:2016/9/19 0019 下午 3:36 - Compilation completed with 1 error and 0 warnings in 2s 454ms 
D:\IdeaProjects\de\src\main\scala\com.te\KMeansExample.scala 
    Error:Error:line (18)No TypeTag available for (Int, org.apache.spark.mllib.linalg.Vector) 
    val dataset: DataFrame = sqlContext.createDataFrame(Seq(

いくつかの詳細2.10.6.itがコンパイルに失敗し、上記のエラーが表示されます。 ただし、の場合、スカラのバージョンを2.11.0に変更してください。 OKを実行しました

2.私はLivyによって私クラスタにこのジョブを提出Hueでこのコードを実行し、私のクラスタがSpark1.6.2とscala2.10.6

でビルド誰も私を助けることができますか?おかげ

hue

答えて

2

私はこの問題の原因については非常にわからないが、私はスカラ座の古いバージョンでScalaの反射がTypeTagyet not inferredの関数のパラメータをうまくすることができませんでしたので、それがあると思います。この場合

val dataset: DataFrame = sqlContext.createDataFrame(Seq(
    (1, Vectors.dense(0.0, 0.0, 0.0)), 
    (2, Vectors.dense(0.1, 0.1, 0.1)), 
    (3, Vectors.dense(0.2, 0.2, 0.2)), 
    (4, Vectors.dense(9.0, 9.0, 9.0)), 
    (5, Vectors.dense(9.1, 9.1, 9.1)), 
    (6, Vectors.dense(9.2, 9.2, 9.2)) 
)).toDF("id", "features") 
Seq((1, Vectors.dense(0.0, 0.0, 0.0)),.....)

パラメータはスカラによって最初に見られている、したがって、その種類は依然としてシステムによって推論されません。したがって、スカラー反射は関連するTypeTagを動かすことができません。

だから私の推測では、もしあなたがそれを動かすと、スカラがタイプを推論できるようになります...それは動作します。

val vectorSeq = Seq(
    (1, Vectors.dense(0.0, 0.0, 0.0)), 
    (2, Vectors.dense(0.1, 0.1, 0.1)), 
    (3, Vectors.dense(0.2, 0.2, 0.2)), 
    (4, Vectors.dense(9.0, 9.0, 9.0)), 
    (5, Vectors.dense(9.1, 9.1, 9.1)), 
    (6, Vectors.dense(9.2, 9.2, 9.2)) 
) 

val dataset: DataFrame = sqlContext.createDataFrame(vectorSeq).toDF("id", "features") 
+0

この問題が発生しましたが、スレッド "main"の例外java.lang.NoSuchMethodError:scala.Predef $。$準拠()Lscala/Predef $$ less $ colon $ less; \t at org.apache.spark.util.Utils $ .getSystemProperties(Utils.scala:1582) –

+0

正しいバージョンのSpark '' org.apache.spark "%" spark-core_2.10 "を使用していますか?あなたのscalaバージョン '2.10.6'によると"%1.6.2 "? –

+0

はい私は "org.apache.spark"% "spark-core_2.10"% "1.6.2"を使用します –

関連する問題