Convertir Étincelle Ligne tapé Tableau de Doubles

Je suis en utilisant Étincelle 1.3.1 avec la Ruche et avoir une ligne d'objet qui est une longue série de doubles pour être transmis à un Vecors.dense constructeur, mais quand je convertir une Ligne à un tableau via

SparkDataFrame.map{r => r.toSeq.toArray} 

Tout type d'information est perdue, et je récupère un tableau de [Toute] type. Je suis incapable de jeter cet objet à double en utilisant

SparkDataFrame.map{r => 
  val array = r.toSeq.toArray 
  array.map(_.toDouble) 
} //Fails with value toDouble is not a member of any

comme

SparkDataFrame.map{r => 
      val array = r.toSeq.toArray 
      array.map(_.asInstanceOf[Double]) 
    } //Fails with java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double 

Je vois que la Ligne d'objet a une API qui prend en charge spécifiques par des éléments comme un type, par le biais de:

SparkDataFrame.map{r => 
  r.getDouble(5)}  

Cependant cas d'échec avec java.lang.Entier ne peut pas être jeté à java.lang.Double

Le seul travail que j'ai trouvé est la suivante:

 SparkDataFrame.map{r => 
  doubleArray = Array(r.getInt(5).toDouble, r.getInt(6).toDouble) 
  Vectors.dense(doubleArray) } 

Cependant, ce serait trop fastidieux lorsque l'indice de 5 à 1000 doivent être convertis à un tableau de double.

Moyen de contourner explicitement l'indexation de la ligne de l'objet?

OriginalL'auteur user2726995 | 2015-05-20