tutorial spark read example español create scala apache-spark spark-dataframe

scala - read - ¿Cómo aplicar una función a una columna de un Spark DataFrame?



spark sql example (2)

Una forma es acceder a ellos utilizando el sql como a continuación.

df.registerTempTable("tab1") val df2 = sqlContext.sql("select tk[0], tk[1] from tab1") df2.show()

Para obtener el tamaño de la columna de matriz,

val df3 = sqlContext.sql("select size(tk) from tab1") df3.show()

Si su versión Spark es anterior, puede usar HiveContext en lugar del contexto SQL de Spark.

También probaría algo que atraviese.

Supongamos que tenemos un Spark DataFrame

df.getClass Class[_ <: org.apache.spark.sql.DataFrame] = class org.apache.spark.sql.DataFrame

con el siguiente esquema

df.printSchema root |-- rawFV: string (nullable = true) |-- tk: array (nullable = true) | |-- element: string (containsNull = true)

Dado que cada fila de la columna tk es una matriz de cadenas, ¿cómo escribir una función de Scala que devolverá el número de elementos en cada fila?


No tiene que escribir una función personalizada porque hay una:

import org.apache.spark.sql.functions.size df.select(size($"tk"))

Si realmente lo deseas, puedes escribir un udf :

import org.apache.spark.sql.functions.udf val size_ = udf((xs: Seq[String]) => xs.size)

o incluso crear una expresión personalizada, pero realmente no tiene sentido.