Bagaimana untuk Menambah Lajur Malar dalam Spark DataFrames?

Susan Sarandon
Lepaskan: 2024-11-06 22:55:02
asal
386 orang telah melayarinya

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))
Salin selepas log masuk

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)))
Salin selepas log masuk

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)))
Salin selepas log masuk

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)))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!