在进行数据分析时,尤其要对网页进行分析时,我们往往要对其中部分的数据进行抽取,这个就需要靠hive的函数来完成了。

1.split函数

首先要讲的是split函数,这个函数的作用是对字符窜进行分割,基本用法为:split(string str, string pat) ,返回值为一个数组array,因此要取值得话需要用到切片,即[数字],其中第一个str是要切分的字符串,第二个pat是以什么字符进行切割。来看案例吧。

hive> select split('abcdef', 'c') ;

OK

["ab","def"]

Time taken: 8.071 seconds, Fetched: 1 row(s)

--只取第一部分

hive> select split('abcdef', 'c') [0];

OK

ab

Time taken: 5.326 seconds, Fetched: 1 row(s)

有的时候切割不是一下就能完成,那么就多去嵌套几次split就好了。

2.substr函数

返回字符串从某个位置开始固定长度的子串,和substring功能相同,基本用法为substr(string A, int start, int len ),还是来看例子。值得注意的是,substr(str,0,2)和substr(str,1,2)的功能都是一样的,都是从第一个位置开始。

hive> select substr('abcde',1,2);

OK

ab

Time taken: 0.086 seconds, Fetched: 1 row(s)

hive> select substr('abcde',0,2);

OK

ab

Time taken: 0.089 seconds, Fetched: 1 row(s)

3.parse_url函数

这个函数是个神器,可以解析url结构,返回我们想要的东西。基本用法为parse_url(string urlString, string partToExtract [, string keyToExtract]),其中partToExtract的有效值包括HOST,PATH, QUERY, REF, PROTOCOL, AUTHORITY,FILE和USERINFO等,具体我就不一一解释了,大家使用时可以自行百度。重点说一下,当第二个参数是QUERY时,第三个参数就可以使用了,这个是参数提取最有用的方法了,还是以案例来说明。

hive> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1',

> 'QUERY', 'k1');

OK

v1

Time taken: 0.428 seconds, Fetched: 1 row(s)

hive>

4.regexp_extract函数

这个函数是最终的大杀器了,以上都解决不了你的问题的时候,有了这个一切都可以解决,使用这个函数的基础是正则表达式基础要会一些。这个函数的基本用法是regexp_extract(string subject, string pattern, int index),第一个参数是待处理的字符串,第二个参数是写好的正则,第三个表达式一般用不上可以忽略掉。来看例子:

hive> select regexp_extract(split(split('https://m.baidu.com.cn/7874','baidu.com.cn/')

[1],'/')[0],'\\d+',0);

OK

7874

Time taken: 0.059 seconds, Fetched: 1 row(s)

有了以上函数,相信应该能满足大家对于hive进行字符串提取的一切要求了。

hive同时不包含一些字符串_hive中的字符串提取相关推荐

  1. R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串

    R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串 目录 R语言st

  2. java返回字符数组_JAVA语言实现随机返回字符串数组中的字符串

    本文主要向大家介绍了JAVA语言实现随机返回字符串数组中的字符串,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. //随机返回字符串数组中的字符串 public static Stri ...

  3. hive同时不包含一些字符串_Hive中常用的字符串操作

    一.准备 创建虚表: echo "X" >> dual.tsv hadoop fs -put dual.tsv '/data//' create table dual( ...

  4. java 字符串包含某个字符_java中判断字符串中是否包含某个特定字符串的方法有哪些...

    判断一个字符串是否包含某个子串的n种方法: 1.startsWith()方法 2.contains()方法 3.indexOf方法 startsWith()方法 这个方法有两个变体,用于检测字符串是否 ...

  5. python中定义字符串_python中的字符串

    python中的字符串一旦定义,则不可以修改 python中的原始字符串 即 在字符串前面加小写字母r 比如:打印输出C:\Program Files\Microsoft Games python中的 ...

  6. python中定义字符串_Python中的字符串String

    Python中除了数字(Numbers)(int,float,complex)之外,另外一种重要的类型就是字符串. 字符串是字符序列,可以由任何字符构成. 在Python语言中,字符串可以放在单引号( ...

  7. python中格式化字符串_Python中所有字符串格式化的指南

    python中格式化字符串 Strings are one of the most essential and used datatypes in programming. It allows the ...

  8. java中截取部分字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  9. java截取倒数后六位的字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

最新文章

  1. PowerDesigner连接SqlServer数据库导出表结构
  2. c#中结构体和类的比较
  3. 二值化_处理连续型特征:二值化与分段
  4. 《用户网络行为画像》读书笔记(一)
  5. vue打包后,font格式错误
  6. 如何变得井井有条-来之不易的秘诀来组织您的生活
  7. PageHelper分页插件使用
  8. git 历史版本导出_Git基础知识(九)
  9. Iterables和迭代器
  10. 跨域请求的两种实现方式
  11. selenium+java+chrome环境搭建
  12. png批量转换成jpg
  13. 禁止百度转码和百度快照缓存的META声明
  14. 从零开始学习Prometheus监控报警系统
  15. 魔百盒CM201-2-YS代工-刷机固件及教程
  16. IE8 正式版官方下载链接
  17. 公司研发人员(含测试)经理、组长能力评价表
  18. 引流产品用哪些比较合适?什么样的产品适合做引流?
  19. 浅谈:Java和C语言各自的学习难度
  20. 【SpringBoot2.0】基于Atomikos的多数据源分布式事务(XA)解决方案

热门文章

  1. vue中的状态管理 vuex store
  2. 【转】工作站和服务器的区别
  3. Java设计模式学习记录-单例模式
  4. appium启动APP配置参数:
  5. Esfog_UnityShader教程_UnityShader语法实例浅析
  6. mysql jsp servlet 中文乱码问题。
  7. 调整SAP系统中物料账和财务账的期间
  8. VStudio 2003 remote debug
  9. yandex 浏览器 linux,业界动态
  10. deep linux 看视频卡,在Deepin 20等Linux系统下用Chrome看虎牙直播经常卡的处理