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

如何為 Spark DataFrame 新增常數列?

DDD
DDD原創
2024-11-08 20:22:02421瀏覽

How do I add constant columns to Spark DataFrames?

向Spark DataFrame 加入常數列

使用Spark DataFrame 時,在某些情況下可能需要新增帶有每行的固定值。然而,一個常見的錯誤是直接使用 withColumn,它的目的是添加計算列。

withColumn 出錯

如果您嘗試直接使用新增常數列withColumn,你會遇到類似如下的錯誤:

AttributeError: 'int' object has no attribute 'alias'

這是因為withColumn 需要一個Column 物件作為第二個參數,它代表一個計算表達式。常數值(例如整數)不是列。

要正確新增常數列,請使用 lit 函數建立文字值。此函數將常數值作為參數並傳回Column 物件:

from pyspark.sql.functions import lit
df.withColumn('new_column', lit(10))

複雜列

對於更複雜的常數值,例如陣列或結構體,您可以使用以下函數:

  • 陣列
  • struct
  • create_map

範例:

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

df.withColumn("some_array", array(lit(1), lit(2), lit(3)))
df.withColumn("some_struct", struct(lit("foo"), lit(1), lit(.3)))
df.withColumn("some_map", create_map(lit("key1"), lit(1), lit("key2"), lit(2)))

範例:範例:

替代方法

在Spark 2.2 及更高版本中,typedLit 函數也可以用於為支援的資料類型(例如序列、映射和元組。 另一個選擇是使用UDF,儘管它比使用上面提到的內建函數慢。

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

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