2016-08-10 2 views
7

Was ist der Unterschied zwischen der Auswahl einer WHERE-Klausel und der Filterung in Spark? Gibt es Anwendungsfälle, in denen einer geeigneter ist als der andere? Wann verwende ichSpark - SELECT WHERE oder Filterung?

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

und wann ist

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

besser geeignet?

Antwort

8

Nach Funken Dokumentation "where() ist ein Alias ​​für filter()"

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

Filter (Bedingung) Filter Reihen der gegebenen Bedingung verwenden. wo() ist ein Alias ​​für filter().

Parameter: Bedingung - Eine Spalte von types.BooleanType oder eine Zeichenfolge von SQL-Ausdruck.

>>> 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')]