Joindre des colonnes dans Apache Spark DataFrame
Dans les applications Spark, le traitement des données structurées nécessite souvent de combiner plusieurs colonnes en un tout. Une tâche courante consiste à joindre deux colonnes ou plus pour produire une nouvelle colonne combinée. Spark SQL fournit des mécanismes pratiques pour y parvenir de manière transparente.
Méthode 1 : Utiliser la fonction CONCAT dans le SQL d'origine
Pour les utilisateurs travaillant avec des requêtes SQL brutes, la fonction CONCAT peut s'avérer utile. Il vous permet de combiner plusieurs colonnes de chaînes en une seule chaîne.
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>
Scala :
<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>
Méthode 2 : Utilisation de la fonction concat de l'API DataFrame
À partir de Spark 1.5.0, l'API DataFrame introduit la fonction concat, qui fournit un moyen élégant de concaténer des colonnes dans l'API.
Python :
<code class="language-python">from pyspark.sql.functions import concat, col, lit df.select(concat(col("k"), lit(" "), col("v")))</code>
Scala :
<code class="language-scala">import org.apache.spark.sql.functions.{concat, lit} df.select(concat($"k", lit(" "), $"v"))</code>
Méthode 3 : Utiliser la fonction concat_ws pour personnaliser le séparateur
Spark fournit également la fonction concat_ws, qui vous permet de spécifier des séparateurs personnalisés entre les chaînes de connexion.
Exemple :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!