SparkSQL REGEXP_EXTRACT函数触发Java索引越界异常问题求助
问题解决:Spark SQL REGEXP_EXTRACT 抛出 No group 异常
报错原因
Spark SQL 的 REGEXP_EXTRACT 函数默认会提取第1个捕获组,但你使用的正则表达式 srsa[^"]* 没有定义任何捕获组(未用括号包裹目标内容),因此触发 IndexOutOfBoundsException: No group 异常。
解决方法
方法1:给正则添加捕获组
在目标匹配内容外加上括号,指定捕获组,再提取第1组:
REGEXP_EXTRACT(reason_text_field, '(srsa[^"]*)', 1) as srsa_id
方法2:提取整个匹配结果(无需分组)
直接指定提取第0组(整个正则匹配的内容):
REGEXP_EXTRACT(reason_text_field, 'srsa[^"]*', 0) as srsa_id
更稳妥的替代方案(推荐)
由于 reason_text_field 是JSON格式,使用Spark的JSON解析函数get_json_object比正则更可靠,避免JSON结构变化导致匹配失败:
get_json_object(reason_text_field, '$.customer_result') as srsa_id
内容的提问来源于stack exchange,提问作者user12625679
相关产品推荐
相关产品推荐

