说在前面的话

  hive的正则表达式,是非常重要!作为大数据开发人员,用好hive,正则表达式,是必须品!

Hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。

1.regexp

语法: A REGEXP B 
操作类型: strings 
描述: 功能与RLIKE相同

select count(*) from olap_b_dw_hotelorder_f where create_date_wid not regexp '\\d{8}'

与下面查询的效果是等效的:

select count(*) from olap_b_dw_hotelorder_f where create_date_wid not rlike '\\d{8}';

2.regexp_extract

语法: regexp_extract(string subject, string pattern, int index) 
返回值: string 
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

hive> select regexp_extract('IloveYou','I(.*?)(You)',1) from test1 limit 1;

Total jobs = 1

...

Total MapReduce CPU Time Spent: 7 seconds 340 msec

OK

love

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

hive> select regexp_extract('IloveYou','I(.*?)(You)',2) from test1 limit 1;

Total jobs = 1

...

OK

You

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

hive> select regexp_extract('IloveYou','(I)(.*?)(You)',1) from test1 limit 1;

Total jobs = 1

...

OK

I

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

hive> select regexp_extract('IloveYou','(I)(.*?)(You)',0) from test1 limit 1;

Total jobs = 1

...

OK

IloveYou

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

hive> select regexp_replace("IloveYou","You","") from test1 limit 1;

Total jobs = 1

...

OK

Ilove

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

3.regexp_replace

语法: regexp_replace(string A, string B, string C) 
返回值: string 
说明:将字符串A中的符合Java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似Oracle中的regexp_replace函数。

hive> select regexp_replace("IloveYou","You","") from test1 limit 1;

Total jobs = 1

...

OK

Ilove

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

hive> select regexp_replace("IloveYou","You","lili") from test1 limit 1;

Total jobs = 1

...

OK

Ilovelili

Hive里的正则表达式
如,https://cwiki.apache.org/confluence/display/Hive/GettingStarted

输入regex可查到

CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^]*) \[()\] ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\".*\") ([^ \"]*|\".*\"))?"
)
STORED AS TEXTFILE;

下面就是hive里的正则表达式,9个字段,对应定义那边也要9个
"input.regex" = "([^ ]*) ([^ ]*) ([^.]*) \[(.*)\] "(.*)" (-|[0-9]*) (-|[(0-9]*) "(.*)" "(.*)""

([^ ]*) ([^ ]*) ([^.]*) \[(.*)\] "(.*)" (-|[0-9]*) (-|[(0-9]*) "(.*)" "(.*)"
([^ ]*) ([^ ]*) ([^.]*) \\[(.*)\\] "(.*)" (-|[0-9]*) (-|[(0-9]*) \"(.*)\" \"(.*)\"

数据来源, 
yarn-root-nodemanager-master.log

yarn-spark-nodemanager-master.log
yarn-hadoop-nodemanager-master.log

这里,有个正则表达式的好工具!
RegexBuddy.exe

  很好用的这款软件!双击它即可。

  如上图所示颜色,代表我们测试的正则表达式,是正确的!

本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6102789.html,如需转载请自行联系原作者

Hadoop Hive概念学习系列之hive的正则表达式初步(六)相关推荐

  1. Hadoop Hive概念学习系列之hive的数据压缩(七)

    Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直 ...

  2. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)

    Hive的操作与传统关系型数据库SQL操作十分类似. Hive主要支持以下几类操作: DDL 1.DDL:数据定义语句,包括CREATE.ALTER.SHOW.DESCRIBE.DROP等. 详细点, ...

  3. Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)

    调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs  *** 的形式!!! 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme:/ ...

  4. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...

    把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...

  5. Hadoop Hive概念学习系列之HiveQL编译基础(十)

    由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行.不包含聚合和连接的简单SELECT语句可以使用一个单独的只包含Map阶段的任务实现.使用GROUP ...

  6. Hadoop HBase概念学习系列之HRegion服务器(三)

    所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...

  7. Hadoop HDFS概念学习系列之shell命令使用HDFS的一些其他命令(十九)

    其他相关命令还包括以下这些: NameNode  -format :  格式化DFS文件系统 secondaryNameNode :   运行DFS的SecndaryNameNode进程 NameNo ...

  8. Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)

    不多说,直接上干货! HDFS升级和回滚机制 作为一个大型的分布式系统,Hadoop内部实现了一套升级机制,当在一个集群上升级Hadoop时,像其他的软件升级一样,可能会有新的bug或一些会影响现有应 ...

  9. Hadoop HDFS概念学习系列之两个和HDFS读写操作最为密切的Hadoop包(二十)

    是org.apache.hadoop.fs和org.apache.hadoop.conf. fs包主要是文件系统的抽象,可以理解为支持多种文件系统实现的统一文件访问接口: conf用于读conf包,就 ...

最新文章

  1. TiDB DevCon 2019 报名开启:年度最高规格的 TiDB 技术大会
  2. zoj - 2112 带修改主席树 + 空间优化
  3. mac java maven 设置
  4. Codeforces Round 493
  5. 工作33:page值不能修改
  6. python widnows mysql_python用Windows开发配置mysql数据库
  7. Atitit enhance dev effect提升开发效率的十大原理与方法v2 u66.docx Atitit enhance dev effect提升开发效率的十大原理 目录 1. 管理 2
  8. 基于51单片机的电子罗盘数字指南针HCM8553原理图程序设计
  9. php goto解密
  10. 两种微生物并肩作战 让生物光伏系统发电能力创新高
  11. 360众测考核简单记录
  12. DSAPI多功能.NET函数库组件
  13. linux中权限设置,Linux 权限设置chmod
  14. 智能语音助手调研【简单可行方案及开源代码】
  15. 某某读书搜索__DATA__分析
  16. matlab导出图片为pdf时警告图窗太大解决方法
  17. 终于搞清楚为啥微信刚打开聊天界面时会卡那么一下了
  18. 如何2周拿到Google Cloud专业架构师认证
  19. Floyd算法学习笔记
  20. 城市公交线路查询系统mysql_网上公交线路查询系统网站(sqlserver2000)

热门文章

  1. 信恒支付源码-第四方支付源码
  2. oracle 高效函数,Oracle分组函数之高效的ROLLUP
  3. android证书别名,android – 了解密钥库,证书和别名
  4. mysql偏差聚集_My SQL聚合函数
  5. PHP版_游戏扫码登录器程序源码
  6. 一对一语音视频直播双端原生+php后台源码
  7. 视频号扩展链接助手小程序功能模块源码v1.5.0
  8. IDEA配置Docker一键部署SpringBoot项目(企业级做法)
  9. RabbitMQ入门学习系列(六) Exchange的Topic类型
  10. WPF入门教程系列(一) 创建你的第一个WPF项目