Apache spark 使用矢量汇编程序和提取;特色;如spark scala中的org.apache.spark.mllib.linalg.Vectors

Apache spark 使用矢量汇编程序和提取;特色;如spark scala中的org.apache.spark.mllib.linalg.Vectors,apache-spark,Apache Spark,我想在Spark 1.5.1中使用高斯混合模型,它使用linalg.mllib.vector rdd 这是我的密码 import org.apache.spark.mllib.clustering.GaussianMixture import org.apache.spark.mllib.clustering.GaussianMixtureModel import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.ml.f

我想在Spark 1.5.1中使用高斯混合模型,它使用linalg.mllib.vector rdd

这是我的密码

import org.apache.spark.mllib.clustering.GaussianMixture
import org.apache.spark.mllib.clustering.GaussianMixtureModel
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.DataFrameNaFunctions
dummy = dummy.na.drop
var colnames= dummy.columns
var df = dummy

for(x<-colnames)
{ 
    if (dummy.select(x).dtypes(0)._2.equals("StringType") || dummy.select(x).dtypes(0)._2.equals("LongType"))
    { df = df.drop(x)}

}

var colnames = df.columns
var assembler = new VectorAssembler().setInputCols(colnames).setOutputCol("features")
var output = assembler.transform(df)
var temp = output.select("features")
import org.apache.spark.mllib.clustering.GaussianMixture
导入org.apache.spark.mllib.clustering.GaussianMixtureModel
导入org.apache.spark.mllib.linalg.Vectors
导入org.apache.spark.ml.feature.VectorAssembler
导入org.apache.spark.sql.DataFrame
导入org.apache.spark.sql.DataFrameNaFunctions
dummy=dummy.na.drop
var colnames=dummy.columns
var df=虚拟

对于(xSpark>=2.0

任一地图:

temp.rdd.map(_.getAs[org.apache.spark.mllib.linalg.Vector]("features"))
或者将
用作

temp
  .select("features")
  .as[Tuple1[org.apache.spark.ml.linalg.Vector]]
  .rdd.map(_._1)
火花<2.0

只需将
映射到
RDD[行]
并提取字段:

temp.rdd.map(_.getAs[org.apache.spark.mllib.linalg.Vector]("features"))

先生,你真是天赐良机!我无法理解spark为什么决定使用“Any”作为默认类型而不是df的内容。@Havnar主要是因为
DataFrame
是一种固有的动态结构。虽然像
frameless
这样的扩展是可能的,但它们不能提供用户习惯于数据帧所期望的体验。也没有por表到Java,不适用于广泛的数据集和特殊分析。