0
votes

SCALA SHORPHAND $ pour la conversion de chaîne en colonne ne reconnaît pas la variable de chaîne

Je veux utiliser le sténographique $ avec des applications d'étincelles écrites à Scala. Mais j'ai un grand nombre de colonnes que je voudrais faire référence à l'aide de variables. Dans le même temps, je veux utiliser la notation $ sworthand pour les chaînes qui détiennent le nom de la colonne.

df.select($"col1") // works
val columnName = "col1"
df.select($columnName) // gives error


6 commentaires

La seule solution de contournement que j'ai est d'utiliser df.Sélectionnez ($ "" + colonName)


Utilisez col (columname)


Le $ est une macro qui fonctionne uniquement avec des valeurs littérales.


@Lamanus qui finit par être org.apache.spark.sql.column pas org.apache.spark.sql.columnname


@ Luismiguelmejíasuárez merci, y a-t-il une macro qui fonctionne avec des variables?


@Ash A Macro Exécute à la compilation, il ne peut pas fonctionner avec des variables.


3 Réponses :


4
votes

Ce que vous voudrez peut-être, c'est.

val columnName = $"col1"
df.select(columnName)


0 commentaires

0
votes

Vous pouvez également utiliser la fonction col code>.

df.select($"col1") 
val columnName = col("col1")
df.select(columnName)


0 commentaires

0
votes

noone mentionné une chose très importante - $ est une conversion implicite stringtoColumn .

Avez-vous importé Spark.implicits ._ , où Spark est votre Sparksession objet?

qui devrait résoudre vos problèmes: -)


0 commentaires