val columnName=Seq("col1","col2",....."coln");

Hay una manera de hacer dataframe.seleccione la operación que desee obtener dataframe que contiene sólo los nombres de columna especificados .
Sé que puedo hacer dataframe.select("col1","col2"...)
pero el columnNamese genera en tiempo de ejecución.
Yo podría hacer dataframe.select() repetidamente para cada nombre de columna en un bucle.Tendrá ningún rendimiento de los gastos generales?. ¿Hay alguna otra manera más sencilla de lograr esto?

InformationsquelleAutor Himaprasoon | 2016-03-21

2 Comentarios

  1. 46
    val columnNames = Seq("col1","col2",....."coln")
    
    //using the string column names:
    val result = dataframe.select(columnNames.head, columnNames.tail: _*)
    
    //or, equivalently, using Column objects:
    val result = dataframe.select(columnNames.map(c => col(c)): _*)
    • tail devuelve la secuencia excluyendo el primer elemento (head); : _* transforma una colección en un vararg argumento – se utiliza cuando se llama a un método que espera un vararg, como seleccionar qué: def select(col: String, cols: String*)
    • Se llama, repite parámetros, usted puede consultar más acerca de aquí – el capítulo 4 de la sección 2.
    • que no compile, de verificación de las firmas de select – es select(col: String, cols: String*): DataFrame para las Cadenas, o select(cols: Column*): DataFrame para las Columnas, no hay select(cols: String*): DataFrame. Consulte spark.apache.org/docs/latest/api/scala/…
  2. 2

    Desde dataFrame.select() espera de una secuencia de columnas y tenemos una secuencia de cadenas, tenemos que convertir nuestra secuencia a un List de cols y convertir esa lista a la secuencia. columnName.map(name => col(name)): _* da una secuencia de columnas de una secuencia de cadenas, y esto puede ser pasado como parámetro a select():

      val columnName = Seq("col1", "col2")
      val DFFiltered = DF.select(columnName.map(name => col(name)): _*)
    • Por favor, añadir un poco de contexto y explicación a esta respuesta.
    • yo estoy usando el spark versión 2.3.1 , cuando yo uso el de arriba se está dando un error ..no coinciden los tipos»: encontrado: org.apache.chispa.sql.Columna , se requiere :Seq[?] , ¿Qué está mal aquí?

Dejar respuesta

Please enter your comment!
Please enter your name here