hadoop input文件路径匹配
来源:互联网 发布:java导出excel的方法 编辑:程序博客网 时间:2024/05/29 03:04
一、最近在搞hadoop大数据计算,hdfs文件目录结构是xxxx/yyyy/MM/dd/xxxxHH.log,说白了就是每小时生成一个文件,生成的文件放在相应年月日目录中。有相关程序会定时把 文件传到hdfs相应目录,具体过程就不在此赘述了。
二、其中有一个业务场景是要定时计算每月的数据(每天计算一次),那么怎么从海量日志目录结构中定位到目前为止 的 目录呢?
三、首先想到的是hdfs目录通配,假如今天是月末,那很好解决,目录直接定位到是xxxx/yyyy/MM/*,这样就解决了,很不好意思,这只是一个特殊情况,很容出现跨月,跨年这这些情况,现在说下跨月的情况,今天是2014年12月10号,按照业务需求是就要计算2014年11月11日到今天的数据。跨年呢,假如今天是2015年1月10日,按照业务规则就要算2014年12月11日到今天的数据。说到这里hdfs目录匹配貌似没那么容易做到,我没找到好的匹配方法,大神们如果有好的方法,欢迎不吝赐教,在此谢过了。hdfs目录匹配不好做到,只能另辟蹊径。动态拼hdfs目录路径,也就是说每次进行mapreduce计算时先动态计算出来hdfs input目录路径。
1、 第一个思路就是java正则表达式,^xxxx/(yyyy/MM/dd)?(yyyy/MM/dd)?(yyyy/MM/dd)?(yyyy/MM/dd)?/xxx.*$,先算出需要计算那些天的数据,以xxxx开头,xxx结尾,只要在表达式内拉出来计算,经测试,该匹配的匹配出来了,不改匹配出来的没匹配出来,貌似问题解决了,不好意思,这样的正则表达式hadoop不认,碰了一鼻子灰,这个方案行不通。
2、再说第二个思路,使用FileInputFormat的setInputPaths方法,其接受两个参数,第一个参数是JobConf,第二个参数是Path数组,看到第二个参数,相信大家也会眼前一亮,为何不直接拼出符合条件path路径呢,先直接一个一个拼出要计算的目录路径,然后封装成Path对象,到此问题解决!
3、记录下问题解决的历程,希望能帮到被此问题困扰的coder...
4、实现代码很简单,就是字符串拼接,就不贴出来了
- hadoop input文件路径匹配
- 内核文件路径正则匹配
- 获取 input file 文件域的路径
- 获取上传文件的路径input file
- 匹配路径特征的文件搜索
- 【jsp】input file标签选择文件后文件路径不回显
- Hadoop中获取输入文件路径
- js判断input file上传文件路径是否正确
- 将HTML input file的文件选择路径清空
- 关于input type=file 获取文件的路径问题
- 匹配路径
- input 正则匹配
- hadoop文件输出控制,多路径输出到不同文件
- hadoop文件输出控制,多路径输出到不同文件
- 正则匹配css文件里面的图片路径
- 利用正则表达式从文件路径中匹配文件名
- 获取input file 路径
- 文件匹配 * ? [ ] [! ]文件匹配 * ? [ ] [! ]
- 第十六周OJ项目一逆序输出数组
- System.arrayCopy()研究
- Java中sleep和wait的区别
- 用结构计算两个有理数的和。
- 紫外线消毒器:飞利浦紫外线杀菌灯TUV36W
- hadoop input文件路径匹配
- [Linux学习笔记]系统分区知识点归纳
- iOS使用xib文件创建一个组件为子控件,进行复用
- 嵌入式 字符设备驱动经典示例
- 如何制作 iOS ipa - Ad-Hoc
- word2vec 中的数学原理详解(三)背景知识
- Android:从assets资源目录下安装apk
- convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码
- Android入门笔记 - 数据存储 - SharedPreferences