当我在Spark SQL中使用like
条件时,似乎需要使用2%的符号%%
。
但是,我在Spark SQL文档中找不到任何相关文档。我很好奇为什么我的设置会导致这个要求。https://spark.apache.org/docs/3.3.0/sql-ref-syntax-qry-select-like.html
示例数据
产品表
| 标识符|产品类型|区域|位置|测量值|
| - -|- -|- -|- -|- -|
| 小行星43635665|橙子-血橙色|欧盟|法国铁路局|30.5分|
| 小行星7896|苹果奶奶史密斯|不适用|美国|16.0个|
| 小行星1231|有机华盛顿|不适用|CAN总线|第7.1条|
| 小行星678|橙子、脐橙|不适用|墨西哥|八十八点四|
import pyspark
from pyspark.sql import functions as F
APP_NAME = "Product: Fruit Template"
SPARK_CONF = [
("spark.dynamicAllocation.maxExecutors", "5"),
("spark.executor.memory", "10g"),
("spark.executor.cores", "4"),
("spark.executor.memoryOverhead", "2000"),
]
spark_conf = pyspark.SparkConf()
spark_conf.setAppName(APP_NAME)
spark_conf.setAll(SPARK_CONF)
sc = pyspark.SparkContext(conf=spark_conf)
spark = pyspark.sql.SparkSession(sc)
def sql(query):
return spark.sql(query)
df = sql("""
SELECT *
FROM product_table
""")
这返回数据
df.filter(F.col("product_type").like("ORANGE%%")).show()
而这将返回空 Dataframe
df.filter(F.col("product_type").like("ORANGE%")).show()
也许值得注意的是,在SQL字符串中使用LIKE
条件时会发生同样的问题
这返回数据
df_new = sql("""
SELECT *
FROM product_table
WHERE product_type like 'ORANGE%%'
""")
df_new.show()
而这将返回空 Dataframe
df_new = sql("""
SELECT *
FROM product_table
WHERE product_type like 'ORANGE%'
""")
df_new.show()
1条答案
按热度按时间lb3vh1jj1#
我使用的是
PySpark Version: 2.3.2
。