Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya boleh menambah lajur tetap pada Spark DataFrames?

Bagaimanakah saya boleh menambah lajur tetap pada Spark DataFrames?

DDD
Lepaskan: 2024-11-08 20:22:02
asal
488 orang telah melayarinya

How do I add constant columns to Spark DataFrames?

Menambah Lajur Malar ke Spark DataFrames

Apabila bekerja dengan Spark DataFrames, terdapat senario di mana seseorang mungkin perlu menambah lajur tetap dengan nilai tetap pada setiap baris. Walau bagaimanapun, kesilapan biasa ialah menggunakan denganLajur secara langsung, yang bertujuan untuk menambah lajur yang dikira.

Ralat dengan denganLajur

Jika anda cuba menambah lajur malar secara langsung menggunakan denganColumn, anda akan menghadapi ralat yang serupa dengan:

AttributeError: 'int' object has no attribute 'alias'
Salin selepas log masuk

Ini kerana withColumn menjangkakan Objek lajur sebagai hujah kedua, yang mewakili ungkapan yang dikira. Nilai malar, seperti integer, bukan Lajur.

Penyelesaian

Untuk menambah lajur malar dengan betul, gunakan fungsi lit untuk mencipta nilai literal. Fungsi ini mengambil nilai malar sebagai hujahnya dan mengembalikan objek Lajur:

from pyspark.sql.functions import lit
Salin selepas log masuk
df.withColumn('new_column', lit(10))
Salin selepas log masuk

Lajur Kompleks

Untuk nilai pemalar yang lebih kompleks, seperti tatasusunan atau struct, anda boleh menggunakan yang berikut fungsi:

  • array
  • struct
  • create_map

Contoh:

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

Alternatif Pendekatan

Dalam Spark versi 2.2 dan ke atas, fungsi typedLit juga boleh digunakan untuk mencipta lajur tetap untuk jenis data yang disokong seperti jujukan, peta dan tupel.

Alternatif lain ialah untuk menggunakan UDF, walaupun ia lebih perlahan daripada menggunakan fungsi terbina dalam yang dinyatakan di atas.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menambah lajur tetap pada 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan