hivefans icon

sparksqlkmeans.scala

hivefans | PRO | 08/05/21 06:22:16 AM UTC | 0 ⭐ | 11757 👁️ | Never ⏰ | []
Scala |

1.7 KB

|

None

|

0 👍

/

0 👎

package sparkml
 
import org.apache.spark.sql.SparkSession
import java.util.Properties
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.rdd.RDD 
import org.apache.spark.mllib.clustering.{KMeans, KMeansModel}
import org.apache.spark.sql.{DataFrame, Row}
 
object Demo {
    
  def main(args: Array[String]): Unit = {
    
    val spark = SparkSession.builder().appName("Hiveml").enableHiveSupport().getOrCreate()
   //.config("spark.sql.inMemoryColumnarStorage.batchSize", 10)
    val mltableName = "ml_kmeans_table"
 
    //执行sql
    val df= spark.sql("select name,num from test")  
    val numClusters = 3
    val numIterations = 20
    var parsedData = res_data.select("num").rdd.map{case Row(s:Double)=> Vectors.dense(Array(s))}
    val clusters = KMeans.train(p, numClusters, numIterations)
    var tt_data = clusters.predict(parsedData)
    tt_data.collect().toList
 
    tt_data.collect().foreach {println}
     
    var index_data = tt_data.toDF("julei").withColumn("tindex", monotonically_increasing_id).withColumn("index", row_number().over(Window.orderBy("tindex"))).drop("tindex")
 
    var org_data = df.withColumn("tindex", monotonically_increasing_id).withColumn("index", row_number().over(Window.orderBy("tindex"))).drop("tindex")
 
    var res_data = org_data.join(index_data, Seq("index"), "left").drop("index").withColumn("julei", col("julei").cast("double"))
 
    sql(s"DROP TABLE IF EXISTS ${mltableName}")
    sql(s"CREATE TABLE $mltableName (name STRING, num DOUBLE, julei DOUBLE)")
    //res_data.printSchema()
    res_data.write.insertInto(mltableName)
    //res_data.write.mode("overwrite").insertInto(mltableName)
    //停止Spark
    spark.stop()
 
  }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎