Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambah Lajur Malar dalam Spark DataFrames?

Bagaimana untuk Menambah Lajur Malar dalam Spark DataFrames?

Susan Sarandon
Susan Sarandonasal
2024-11-06 22:55:02391semak imbas

How to Add Constant Columns in Spark DataFrames?

Menambah Lajur Malar dalam Spark DataFrames

Dalam Spark, menambah lajur tetap pada DataFrame dengan nilai khusus untuk setiap baris boleh dicapai menggunakan pelbagai kaedah.

lit dan Fungsi Lain (Spark 1.3 )

Dalam Spark versi 1.3 dan ke atas, fungsi lit digunakan untuk mencipta nilai literal, yang boleh digunakan sebagai hujah kedua kepada DataFrame.withColumn untuk menambah lajur tetap:

from pyspark.sql.functions import lit

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

Untuk lajur yang lebih kompleks, fungsi seperti tatasusunan, peta dan struct boleh digunakan untuk membina nilai lajur yang diingini:

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 memperkenalkan fungsi typedLit, yang menyokong penyediaan Seq, Map dan Tuples sebagai pemalar:

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)))

Menggunakan UDF

Sebagai alternatif kepada menggunakan nilai literal , adalah mungkin untuk mencipta Fungsi Ditentukan Pengguna (UDF) yang mengembalikan nilai malar untuk setiap baris dan menggunakan UDF itu untuk menambah lajur:

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)))

Nota:

Nilai malar juga boleh dihantar sebagai argumen kepada UDF atau fungsi SQL menggunakan binaan yang sama.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur Malar dalam Spark DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn