sparkSql读取hive表数据,使用正则替换指定字符,然后进行 行转列

实例:住高层的都看看//@M大王叫我来巡山:电动车楼道充电真的有很大安全隐患!!//@休闲璐:看了这篇我害怕的点是我对门就天天把电动车放在楼道

正则替换得到想要的结果:住高层的都看看§电动车楼道充电真的有很大安全隐患!!§看了这篇我害怕的点是我对门就天天把电动车放在楼道

 

/** overview_content  --> 准备替换的表字段
*
* '//@.*?:'  --> 按照 //@--:  进行匹配
*
* '§'  --> 将匹配成功的内容用 § 进行替换
*/   
 
val dataContent = spark.sql(
"""
select regexp_replace(overview_content,'//@.*?:','§') overview_content from weibo_overview
""")


/** 然后进行再按照 § 进行切割,进行 行转列 */

val splitDF: DataFrame = dataContent.withColumn("_tmp", 
                         split(dataContent.col("overview_content"), "§"))
                         .select($"_tmp".getItem(0).as("user_nick_name"),
                                 $"_tmp".getItem(1).as("views"))
                         .drop("_tmp")

行转列之后的结果:

住高层的都看看

电动车楼道充电真的有很大安全隐患!!

看了这篇我害怕的点是我对门就天天把电动车放在楼道

 

你可能感兴趣的:(Spark,regexp_replace)