Spark如何筛选postal_code字段包含英文字母的DataFrame数据
Spark DataFrame筛选postal_code包含英文字母的实现方案
核心逻辑是通过正则表达式匹配postal_code字段中是否存在任意大小写英文字母,匹配成功的行保留。
PySpark 实现
使用Spark SQL的rlike方法完成正则匹配:
from pyspark.sql import functions as F # 筛选逻辑:postal_code包含任意大小写英文字母 filtered_df = df.filter(F.col("postal_code").rlike("[a-zA-Z]")) # 查看筛选结果 filtered_df.show()
Scala Spark 实现
语法和PySpark逻辑一致,仅API写法略有区别:
import org.apache.spark.sql.functions.col val filteredDf = df.filter(col("postal_code").rlike("[a-zA-Z]")) // 查看筛选结果 filteredDf.show()
注意事项
- 如果
postal_code字段为数值类型,需要先转为字符串再匹配,避免类型报错,修改为:col("postal_code").cast("string").rlike("[a-zA-Z]") - 空值
null调用rlike会返回null,不会被计入筛选结果,如果需要单独处理空值,可以额外添加isNotNull或isNull条件 - 如果只需要匹配小写或大写英文字母,可将正则修改为
[a-z](仅小写)或[A-Z](仅大写)即可
内容的提问来源于stack exchange,提问作者Sharmila Chowdary
相关产品推荐
相关产品推荐

