/ / Spark - SELECIONE ONDE ou filtrando? - apache-spark

Spark - SELECIONAR WHERE ou filtrar? - apache-spark

Qual é a diferença entre selecionar com uma cláusula where e filtrar no Spark? Existem casos de uso nos quais um é mais apropriado que o outro? Quando devo usar

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

e quando é

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

mais apropriado?

Respostas:

20 para resposta № 1

De acordo com a documentação do spark "onde () é um alias para filter ()"

http://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html

filtro (condição) Filtra linhas usando a condição especificada. onde () é um alias para filter ().

Parâmetros: condition - uma coluna de types.BooleanType ou uma sequência de expressões 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")]