Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menambah Lajur Malar dalam Spark DataFrames?
Dalam Spark, menambah lajur tetap pada DataFrame dengan nilai khusus untuk setiap baris boleh dicapai menggunakan pelbagai kaedah.
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)))
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)))
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!