首頁  >  文章  >  後端開發  >  如何在 Spark DataFrame 中新增常數列?

如何在 Spark DataFrame 中新增常數列?

Susan Sarandon
Susan Sarandon原創
2024-11-06 22:55:02387瀏覽

How to Add Constant Columns in Spark DataFrames?

在 Spark DataFrame 中加入常數列

在 Spark 中,可以使用多種方法向 DataFrame 新增每行具有特定值的常數列。

lit 和其他函數(Spark 1.3 )

在Spark 1.3 及以上版本中,lit 函數用於建立一個文字值,它可以用作DataFrame.withColumn 的第二個參數來新增常數列:

from pyspark.sql.functions import lit

df.withColumn('new_column', lit(10))

對於更複雜的列,可以使用array、map 和struct 等函數來建立所需的列值:

from pyspark.sql.functions import array, map, struct

df.withColumn("some_array", array(lit(1), lit(2), lit(3)))
df.withColumn("some_map", map(lit("key1"), lit(1), lit("key2"), lit(2)))

typedLit (Spark 2.2 )

Spark 2.2 引入了typedLit 函數,它支援提供Seq、Map 和Tuple 作為常數:

import org.apache.spark.sql.functions.typedLit

df.withColumn("some_array", typedLit(Seq(1, 2, 3)))
df.withColumn("some_struct", typedLit(("foo", 1, 0.3)))

使用UDF

作為使用文字值的替代方法,可以建立一個為每行傳回常數值的使用者定義函數(UDF),並使用該UDF 新增列:

from pyspark.sql.functions import udf, lit

def add_ten(row):
    return 10

add_ten_udf = udf(add_ten, IntegerType())
df.withColumn('new_column', add_ten_udf(lit(1.0)))

注意:

常數值也可以使用相同的建構作為參數傳遞給UDF 或SQL 函數。

以上是如何在 Spark DataFrame 中新增常數列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn