2016-11-20 20 views
1

私のデータを読み込み、基本的な線形回帰を行いたいと思います。まず、フィーチャーの列を作成するには、VectorAssemblerを使用する必要があります。ただし、assembler.transform(df)を使用した場合、はdfで、DataSetとなります。私はdf.toDSを試しましたが、value toDS is not a member of org.apache.spark.sql.DataFrameとなります。確かに、それはorg.apache.spark.sql.DatasetHolderのメンバーです。Spark 2.0 - DataFrameをDataSetに変換する

ここで何が間違っていますか?

package main.scala 

import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 
import org.apache.spark.sql.functions._ 
import org.apache.spark.sql.SQLContext 
import org.apache.spark.sql.DatasetHolder 
import org.apache.spark.ml.regression.LinearRegression 
import org.apache.spark.ml.feature.RFormula 
import org.apache.spark.ml.feature.VectorAssembler 
import org.apache.spark.ml.linalg.Vectors 

object Analyzer { 
    def main(args: Array[String]) { 

    val conf = new SparkConf() 
    val sc = new SparkContext(conf) 
    val sqlContext = new SQLContext(sc)  
    import sqlContext.implicits._ 

    val df = sqlContext.read 
    .format("com.databricks.spark.csv") 
    .option("header", "false") 
    .option("delimiter", "\t") 
    .option("parserLib", "UNIVOCITY") 
    .option("inferSchema", "true") 
    .load("data/snap/*") 

    val assembler = new VectorAssembler() 
    .setInputCols(Array("own", "want", "wish", "trade", "comment")) 
    .setOutputCol("features") 

    val df1 = assembler.transform(df) 

    val formula = new RFormula().setFormula("rank ~ own + want + wish + trade + comment") 
    .setFeaturesCol("features") 
     .setLabelCol("rank") 
} 
} 

答えて

2

私はまだSparkSQLContextSpark 1.6スタイルを使用しているのでどうやら問題でした。私はSparkSessionのために変更し、transform()DataFrameを暗黙に受け入れることができました。

package main.scala 

import org.apache.spark.sql.SparkSession 
import org.apache.spark.sql.Dataset 
import org.apache.spark.ml.regression.LinearRegression 
import org.apache.spark.ml.feature.RFormula 
import org.apache.spark.ml.feature.VectorAssembler 
import org.apache.spark.ml.linalg.Vectors 

object Analyzer { 
    def main(args: Array[String]) { 

     val spark = SparkSession.builder().getOrCreate() 
     import spark.implicits._ 

     val df = spark.read 
     .format("com.databricks.spark.csv") 
     .option("header", "false") 
     .option("delimiter", "\t") 
     .option("parserLib", "UNIVOCITY") 
     .option("inferSchema", "true") 
     .load("data/snap/*")   

     df.show() 

     val assembler = new VectorAssembler() 
     .setInputCols(Array("own", "want", "wish", "trade", "comment")) 
     .setOutputCol("features") 

     val df1 = assembler.transform(df) 
    } 
} 
関連する問題