Pyspark for LIKE运算符的等效项是什么?例如,我想这样做:
SELECT * FROM table WHERE column LIKE "*somestring*";
寻找类似这样的简单操作(但这不起作用):
df.select('column').where(col('column').like("*s*")).show()
您可以使用where
和col
功能执行相同的操作。 where
将用于根据条件过滤数据(在此情况下,如果列类似于'%string%'
,则为col('col_name')
)。 like
用于表示条件,df.where(col('col1').like("%string%")).show()
是运算符:
df.select('column').where("column like '%s%'").show()
使用spark 2.0.0及更高版本也可以正常工作:
https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions
使用like运算符。
df.filter(df.column.like('%s%')).show()
df.select('column').where(col('column').like("%s%")).show()
嗯...应该有像regexp这样的sql->
df.registerTempTable('my_table')
query = """SELECT * FROM my_table WHERE column LIKE '*somestring*'"""
sqlContext.sql(query).show()
在pyspark中,您始终可以将数据框注册为表并进行查询。
ILIKE
要复制不区分大小写的lower
,可以将like
与from pyspark.sql.functions import lower
df.where(lower(col('col1')).like("%string%")).show()
结合使用。
spark 2.4
使用spark 2.4
,您可以简单地执行否定操作:
df = df.filter("column not like '%bla%'")
我总是使用UDF来实现这种功能:
from pyspark.sql import functions as F
like_f = F.udf(lambda col: True if 's' in col else False, BooleanType())
df.filter(like_f('column')).select('column')