向Spark DataFrame 添加常數列
嘗試使用withColumn 和常數值向DataFrame 添加新列時,用戶可能會因為資料類型不匹配而遇到錯誤。
解:
Spark 2.2 :
使用typedLit 直接賦值各種類型的常數值:
import org.apache.spark.sql.functions.typedLit df.withColumn("some_array", typedLit(Seq(1, 2, 3)))使用typedLit 直接賦值各種類型的常數值:
Spark 1.3 :
from pyspark.sql.functions import lit df.withColumn('new_column', lit(10))使用lit 建立文字值:
Spark 1.4 :
from pyspark.sql.functions import array, struct, create_map df.withColumn("some_array", array(lit(1), lit(2), lit(3)))對於複雜的列,使用array、struct和create_map等功能塊:
import org.apache.spark.sql.functions.{array, lit, map, struct} df.withColumn("new_column", lit(10)) df.withColumn("map", map(lit("key1"), lit(1), lit("key2"), lit(2)))在 Scala中:
df.withColumn( "some_struct", struct(lit("foo").alias("x"), lit(1).alias("y"), lit(0.3).alias("z")) )對於結構,在每個欄位上使用別名或在整個物件上進行強制轉換以提供名稱:
注意:
這些建構也可用來將常數參數傳遞給UDF 或SQL 函式。
以上是如何為 Spark DataFrame 新增常數列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!