如何在Spark SQL中基于单列分隔值拆分生成多行数据
Spark SQL 管道符分隔字段拆分为多行实现方案
核心实现逻辑
无需借助Dataframe API,纯SQL即可实现类似explode的拆分效果:先通过split函数将管道符分隔的字符串字段拆分为数组,再通过explode函数将数组元素展开为独立行。
示例查询语句
假设待处理的表名为your_table,存储管道符分隔值的字段名为pipe_separated_col,参考查询如下:
SELECT -- 此处可填写原表需要保留的其他字段 col1, col2, split_value FROM your_table LATERAL VIEW EXPLODE(SPLIT(pipe_separated_col, '\\|')) temp_table AS split_value;
注意:
split的第二个参数为正则表达式,管道符|属于正则特殊字符,需要加双反斜杠转义才能被识别为普通分隔符。
效果说明
如果原表某行pipe_separated_col的取值为Value1|Value2|Value3,执行上述查询后会生成3行结果,split_value的取值分别为Value1、Value2、Value3,其余原表字段的取值和原行保持一致。
可选优化
- 若拆分后出现空字符串(比如分隔符连续、首尾带分隔符的场景),可在查询末尾增加过滤条件:
WHERE split_value != ''
内容的提问来源于stack exchange,提问作者MetallicPriest
相关产品推荐
相关产品推荐

