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 № 1De 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")]