- 问题描述
现在要将以下字符串中的每个iid解析出来
[ nt6u5iystv32ne2 ; 1hnc62lteegcjhu ; 9124fswltwxsc48 ; 8tkjl4n622ft97f ; 1tuxop0iyhlmmz5 ; uiq0rxuywu508qr ; 0lyo1h8np3w3trk ; e7hi6lep1yc51ca ; 4pyadnvmlz56qhp ; m2lbjjlfidqc8iu ]
问题分析
- 首先需要去除’[‘和’]’
- 然后去除多余的空格
- 最后按照’;’split一下就可以了
运行代码(假定记录在tag_model.temptemp_test_x表)
select split(regexp_replace(iids, '[\\[\\]\\s]', ''), '\073') from from tag_model.temptemp_test_x limit 1;
运行结果
注意问题
如果在使用regexp_replace(str, reg, rep)函数的时候,若没有进行转义操作(即,在对应字符前加’\’字符),则会报错,详细如下代码:
hive> select split(regexp_replace(iids, '[]', ''), '\073') from tag_model.temptemp_test_x limit 1;
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
[GC 27106K->10124K(83008K), 0.0020190 secs]
[GC 27117K->10108K(83008K), 0.0026310 secs]
Starting Job = job_201612260917_53446,