hive环境和hive -e环境转义字符问题

在日常工作中,我们遇到一个hive字段通常需要进行截取才能得到我们最终想要的结果,比如"https://www.baidu.com/s?wd=%E7%BE%8E%E5%9B%BD"这个url中wd后边是经过处理后的搜索词,我们需要针对这一部分进行统计分析,首先需要对这部分字符串进行截取,可以采用hive的split函数。

split函数的官方用法是split(str, regex),可以看出split函数是基于正则表达式进行操作的,遇到特殊字符需要进行转义,上述url截取我们需要字符串的方法是split('https://www.baidu.com/s?wd=%E7%BE%8E%E5%9B%BD','wd=')[1]。

更进一步如果我们待拆分字符串中含有特殊字符比如./等,在hive环境和hive -e中操作略有不同,比如我们对'192.11.20.2'这个IP地址进行拆分,如果在hive环境中,我们可以使用split('192.11.20.2','\\.')[0]获得IP地址第一部分的数字,而在hive-e中需要再加一个\进行转义,即使用split('192.11.20.2','\\\.')[0]获得IP地址第一部分的数字。

这是因为hive -e是在shell中运行程序,而\\在shell中也是特殊字符,需要进行再一次的转义,所以需要用三个转义字符\\\。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容