web-dev-qa-db-fra.com

Spark - CHOISIR OU filtrer?

Quelle est la différence entre sélectionner avec une clause where et filtrer dans Spark?
Existe-t-il des cas d'utilisation dans lesquels l'un est plus approprié que l'autre?

Quand dois-je utiliser

DataFrame newdf = df.select(df.col("*")).where(df.col("somecol").leq(10))

et quand est

DataFrame newdf = df.select(df.col("*")).filter("somecol <= 10")

plus approprié?

27
lte__

Selon documentation d'étincelle "where() est un alias pour filter()"

filter(condition) Filtre les lignes en utilisant la condition donnée. where() est un alias pour filter().

Paramètres : condition - a Column de types.BooleanType ou une chaîne d’expression SQL.

>>> df.filter(df.age > 3).collect()
[Row(age=5, name=u'Bob')]
>>> df.where(df.age == 2).collect()
[Row(age=2, name=u'Alice')]

>>> df.filter("age > 3").collect()
[Row(age=5, name=u'Bob')]
>>> df.where("age = 2").collect()
[Row(age=2, name=u'Alice')]
52
Yaron