Apache Spark DataFrame で列を結合
Spark アプリケーションでは、構造化データを処理するには、複数の列を結合して全体にする必要がよくあります。一般的なタスクは、2 つ以上の列を結合して、新しい結合列を作成することです。 Spark SQL は、これをシームレスに実現する便利なメカニズムを提供します。
方法 1: 元の SQL で CONCAT 関数を使用する
生の SQL クエリを扱うユーザーにとって、CONCAT 関数は便利です。複数の列の文字列を 1 つの文字列に結合できます。
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>
スカラ:
<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>
方法 2: DataFrame API の concat 関数を使用する
Spark 1.5.0 以降、DataFrame API には concat 関数が導入され、API で列を連結するエレガントな方法が提供されます。
Python:
<code class="language-python">from pyspark.sql.functions import concat, col, lit df.select(concat(col("k"), lit(" "), col("v")))</code>
スカラ:
<code class="language-scala">import org.apache.spark.sql.functions.{concat, lit} df.select(concat($"k", lit(" "), $"v"))</code>
方法 3: concat_ws 関数を使用して区切り文字
をカスタマイズするSpark は、接続文字列間にカスタム区切り文字を指定できる concat_ws 関数も提供します。
例:
<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>
以上がApache Spark DataFrame で列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。