2017-09-01 5 views
-1

J'ai un dataframeétincelle scala - fusion mutiple lignes dans un

|--id:string (nullable = true) 
|--ddd:struct (nullable = true) 
    |-- aaa: string (nullable = true) 
    |-- bbb: long(nullable = true) 
    |-- ccc: string (nullable = true) 
    |-- eee: long(nullable = true) 

J'ai sortie comme ça

id  | ddd 
-------------------------- 
    1 | [hi,1,this,2] 
    2 | [hello,6,good,3] 
    1 | [hru,2,where,7] 
    3 | [in,4,you,1] 
    2 | [how,4,to,3] 

Je veux que prévu o/p comme:

id | ddd 
    -------------------- 
    1 | [hi,1,this,2],[hru,2,where,7] 
    2 | [hello,6,good,3],[how,4,to,3] 
    3 | [in,4,you,1] 

S'il vous plaît aider

+0

Est-ce même possible? Parce que vous changez simplement la structure de votre colonne * dddd *, il devient un tableau de struct avec l'agrégation – tricky

+0

ok. pouvez-vous me donner le code s'il vous plaît – gayathri

Répondre

4

vous pouvez collect_list comme suit

import org.apache.spark.sql.functions._ 
df.groupBy("id").agg(collect_list("ddd").as("ddd")) 

collect_set fonctionne aussi bien

df.groupBy("id").agg(collect_set("ddd").as("ddd")) 
+0

collect_list ne fonctionne pas. – gayathri

+0

quelle est l'erreur. il fonctionne pour moi si –

+0

il dit une fonction non définie collect_list – gayathri