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:
<code class="language-python">df = sqlContext.createDataFrame([("foo", 1), ("bar", 2)], ("k", "v")) df.registerTempTable("df") sqlContext.sql("SELECT CONCAT(k, ' ', v) FROM df")</code>
Skala:
<code class="language-scala">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")</code>
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:
<code class="language-python">from pyspark.sql.functions import concat, col, lit df.select(concat(col("k"), lit(" "), col("v")))</code>
Skala:
<code class="language-scala">import org.apache.spark.sql.functions.{concat, lit} df.select(concat($"k", lit(" "), $"v"))</code>
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:
<code class="language-python"># 创建一个包含多个列的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))</code>
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!