creando una columna constante en un Spark DataFrame
agregando una columna constante a un Spark DataFrame con un valor arbitrario que se aplica a todas las filas se puede lograr de varias maneras. El método WithColumn, destinado a este propósito, puede conducir a errores al intentar proporcionar un valor directo como su segundo argumento.
usando valores literarios (Spark 1.3)
para resolver este problema, use Lit para crear una representación literal de la representación literal del valor deseado:
[&] de PheseSpark. df.withColumnumn ('new_columnumn', LIT (10))from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
creando columnas complejas (Spark 1.4) [&]
para tipos de columnas más complejos, tales como matrices, estructuras o mapas, usa las funciones apropiadas:de PySpark. df.WithColumn ('Array_Column', Array (Lit (1), Lit (2)))) df.withColumn ('struct_column', struct (lit (lit ('foo'), lit (1)))
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))tiptado literales (chispa 2.2)
spark 2.2 introduces tipEdlit, proporcionando soporte para seq, map y tuplas:
INMINT org.apache.spark.sql.functions.typedlit df.withColumn ("some_array", typedlit (seq (1, 2, 2, 3)))
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))utilizando funciones definidas por el usuario (uDfs)
alternativamente, cree un UDF que devuelva el valor constante:
de Pyspark. def constant_column (valor): Def UDF (DF): return [valor para _ en rango (df.count ())] devolver f.udf (UDF) df.withColumn ('constant_column', constant_column (10))
from pyspark.sql import functions as F def constant_column(value): def udf(df): return [value for _ in range(df.count())] return F.udf(udf) df.withColumn('constant_column', constant_column(10))
Estos métodos también se pueden usar para pasar argumentos constantes a las funciones UDFS o SQL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3