Sertai lajur dalam Apache Spark DataFrame
Dalam aplikasi Spark, pemprosesan data berstruktur selalunya memerlukan gabungan berbilang lajur menjadi satu keseluruhan. Tugas biasa adalah untuk menyertai dua atau lebih lajur untuk menghasilkan lajur gabungan baharu. Spark SQL menyediakan mekanisme yang mudah untuk mencapai ini dengan lancar.
Kaedah 1: Gunakan fungsi CONCAT dalam SQL asal
Untuk pengguna yang bekerja dengan pertanyaan SQL mentah, fungsi CONCAT boleh berguna. Ia membolehkan anda menggabungkan berbilang lajur rentetan ke dalam satu rentetan.
Python:
df = sqlContext.createDataFrame([("foo", 1), ("bar", 2)], ("k", "v")) df.registerTempTable("df") sqlContext.sql("SELECT CONCAT(k, ' ', v) FROM df")
Skala:
import sqlContext.implicits._ val df = sc.parallelize(Seq(("foo", 1), ("bar", 2))).toDF("k", "v") df.registerTempTable("df") sqlContext.sql("SELECT CONCAT(k, ' ', v) FROM df")
Kaedah 2: Menggunakan fungsi concat API DataFrame
Bermula dari Spark 1.5.0, DataFrame API memperkenalkan fungsi concat, yang menyediakan cara yang elegan untuk menggabungkan lajur dalam API.
Python:
from pyspark.sql.functions import concat, col, lit df.select(concat(col("k"), lit(" "), col("v")))
Skala:
import org.apache.spark.sql.functions.{concat, lit} df.select(concat($"k", lit(" "), $"v"))
Kaedah 3: Gunakan fungsi concat_ws untuk menyesuaikan pemisah
Spark juga menyediakan fungsi concat_ws, yang membolehkan anda menentukan pemisah tersuai antara rentetan sambungan.
Contoh:
# 创建一个包含多个列的DataFrame df = spark.createDataFrame([ ("John", "Doe", "John Doe"), ("Jane", "Smith", "Jane Smith") ], ["first_name", "last_name", "full_name"]) # 使用自定义分隔符连接名字和姓氏 df = df.withColumn("full_name_with_comma", concat_ws(",", df.first_name, df.last_name))
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Lajur dalam Apache Spark DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!