在Spark DataFrame 中建立常數列
使用適用於所有行的任意值將常數列新增至Spark DataFrame 可以可以透過多重化>使用適用於所有行的任意值將常數列新增至Spark DataFrame 可以可以透過多點多組種方式來實現。用於此目的的 withColumn 方法在嘗試提供直接值作為其第二個參數時可能會導致錯誤。
使用文字值(Spark 1.3 )
要解決此問題,請使用lit 建立所需值的文字表示:
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))
建立複雜列(Spark 1.4 )
對於更複雜的列類型,例如數組、結構體或映射,請使用適當的函數:
from pyspark.sql.functions import array, struct df.withColumn('array_column', array(lit(1), lit(2))) df.withColumn('struct_column', struct(lit('foo'), lit(1)))
類型化文字(Spark 2.2 )
Spark 2.2 引入了typedLit,提供了對Seq、Map和元組:
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3)))
使用使用者定義函數 (UDF)
或者,建立一個傳回常數值的 UDF:
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))
注意:
這些方法也可以用來將常數參數傳遞給 UDF 或 SQL 函數。
以上是如何為 Spark DataFrame 新增常數列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!