2015-11-27 1 views
3

Je veux filtrer les lignes Spark DataFrame qui ont la colonne Email qui ressemblent réel, voici ce que j'ai essayé:dataframe filtre avec Regex Spark à Scala

df.filter($"Email" match {case ".*@.*".r => true case _ => false}) 

Mais cela ne fonctionne pas. Quelle est la bonne façon de le faire?

+2

Utilisez 'rlike' comme décrit ici: http://stackoverflow.com/questions/27249685/sql-functions-with-schemardd-using-language-integrated-sql – TomTom101

Répondre

15

Pour développer @ commentaire de TomTom101, le code que vous cherchez est:

df.filter($"Email" rlike ".*@.*") 

La raison principale pour laquelle le match ne fonctionne pas est parce que DataFrame a deux filter functions qui prennent une chaîne ou un Colonne. Ceci est différent de RDD avec un filter qui prend une fonction de T à Boolean.