it-swarm.dev

Spark DataFrame e rinominazione di più colonne (Java)

C'è un modo più carino di prefixare o rinominare tutte o più colonne nello stesso momento di un determinato DataFrame di SparkSQL piuttosto che chiamare più volte dataFrame.withColumnRenamed()

Un esempio potrebbe essere se voglio rilevare le modifiche (usando il join esterno completo). Poi sono rimasto con due DataFrames con la stessa struttura. 

9
JiriS

Suggerisco di usare il metodo select () per eseguire questo. Infatti il ​​metodo withColumnRenamed () usa select () da solo. Ecco un esempio su come rinominare più colonne:

import org.Apache.spark.sql.functions._

val someDataframe: DataFrame = ...

val initialColumnNames = Seq("a", "b", "c")
val renamedColumns = initialColumnNames.map(name => col(name).as(s"renamed_$name"))
someDataframe.select(renamedColumns : _*)
11
Zyoma

Ho appena trovato la risposta 

df1_r = df1.select(*(col(x).alias(x + '_df1') for x in df1.columns))

at stackoverflow qui (vedere la fine della risposta accettata)

0
lanenok
or (a <- 0 to newsales.columns.length - 1) 
{ 
 var new_c = newsales.columns(a).replace('(','_').replace(')',' ').trim  
 newsales_var = newsales.withColumnRenamed(newsales.columns(a),new_c) 
}
0
Devndra