Ainsi, l'image que je reçois après l'exécution du code suivant correspond exactement à ce que je veux. Il s'agit de la même image que l'original, mais toutes les cellules avec des données purement numériques ont été supprimées (les parenthèses sont remplacées par un signe moins à l'avant). StringModifierIterator accepte une structure de données et renvoie une liste [colonne]. La List [Column] peut alors être utilisée comme dans la commande dataframe.select (Liste [Column]: _ *) pour créer une nouvelle dataframe.Pourquoi SparkSQL UDF renvoie-t-il une structure de données avec des noms de colonne au format UDF ("Nom de colonne d'origine")?
Malheureusement, les noms de colonne ont été modifiés à quelque chose comme UDF ("Original Column Name") et je ne peux pas comprendre pourquoi.
def stringModifierIterator(dataFrame: DataFrame, dataFrameColumns: Array[String], uDF: UserDefinedFunction): List[Column] ={
if(dataFrameColumns.isEmpty){
Nil
} else {
uDF(dataFrame(dataFrameColumns.head)) :: stringModifierIterator(dataFrame, dataFrameColumns.tail, uDF)
}
}
val stringModifierFunction: (String => String) = { s: String => Option(s).map(modifier).getOrElse("0") }
def modifier(inputString: String): String = {
???
}
C'est ce que les noms de colonnes ressemblent quand je l'utilise df.show()
Pouvez-vous ajouter à quoi ressemble la sortie ('dataframe.show())'? – Shaido
Je viens d'ajouter cela au bas de ma question – suleydaman