18. Spark sql regexp_replace 及 rlike用法
工作中遇到了一些字符串中偶然含有 \n (软回车) \r (软空格),在写入到hive后,建Kylin cube时有报错,说明在数据清洗时,没有考虑到这一点。要在数据清洗时,去除 \n (软回车) \r (软空格)
当要匹配特殊的隐藏字符\n \r \t ,等回车符、制表符时,需要通过使用四个 / 进行转译。
伪代码
# RDD的替换方法
s.replaceAll("[\\r\\n]", "")
# Spark Sql的替换方法
select(regexp_replace(trim($"name"), "[\\r\\n]", "").alias("name"))
#
sparkSession.sql(
"""
|select
|regexp_replace(title, '\\\\r|\\\\n|\\\\b|\\\\f|\\\\t','') title
|from tableName
""")
rlike用法
https://stackoverflow.com/questions/41756751/using-rlike-in-org-apache-spark-sql-column
https://mungingdata.com/apache-spark/advanced-string-matching-with-rlike/
此贴来自汇总贴的子问题,只是为了方便查询。
总贴请看置顶帖:
pyspark及Spark报错问题汇总及某些函数用法。