Este grupo especializado luego de días de investigación y de recopilar de datos, dimos con los datos necesarios, queremos que te resulte útil en tu plan.
Solución:
Puedes usar struct
función que crea una tupla de columnas proporcionadas:
import org.apache.spark.sql.functions.struct
val df = Seq((1,2), (3,4), (5,3)).toDF("a", "b")
df.withColumn("NewColumn", struct(df("a"), df("b")).show(false)
+---+---+---------+
|a |b |NewColumn|
+---+---+---------+
|1 |2 |[1,2] |
|3 |4 |[3,4] |
|5 |3 |[5,3] |
+---+---+---------+
Puede utilizar una función definida por el usuario udf
para lograr lo que quieres.
definición de FDU
object TupleUDFs
import org.apache.spark.sql.functions.udf
// type tag is required, as we have a generic udf
import scala.reflect.runtime.universe.TypeTag, typeTag
def toTuple2[S: TypeTag, T: TypeTag] =
udf[(S, T), S, T]((x: S, y: T) => (x, y))
Uso
df.withColumn(
"tuple_col", TupleUDFs.toTuple2[Int, Int].apply(df("a"), df("b"))
)
asumiendo que “a” y “b” son las columnas de tipo Int
quieres poner una tupla.
Puede fusionar múltiples columnas de marco de datos en una usando array.
// $"*" will capture all existing columns
df.select($"*", array($"col1", $"col2").as("newCol"))
Comentarios y puntuaciones de la guía
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)