MapReduce工作笔记——Hadoop Streaming多目录/多路输入
时间:2022-07-24
本文章向大家介绍MapReduce工作笔记——Hadoop Streaming多目录/多路输入,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0. 前言
在工作中时常会遇到一个job需要多路径的输入,比如计算CTR,需要PV、Click的输入路径,或者是想对一周的数据做Merge等, 下面将提供三种方法来完成多目录/多路输入。
比如,我路径下有如下共12个文件:
$ hls /home/wangcongying/test/
/home/wangcongying/test/20181101
/home/wangcongying/test/20181102
/home/wangcongying/test/20181103
/home/wangcongying/test/20181104
/home/wangcongying/test/20181105
/home/wangcongying/test/20181106
/home/wangcongying/test/20181107
/home/wangcongying/test/20181108
/home/wangcongying/test/20181109
/home/wangcongying/test/20181110
/home/wangcongying/test/20181111
/home/wangcongying/test/otherFile
每一个路径下有10个part,如下:
$ hls /home/wangcongying/test/20181101
/home/wangcongying/test/20181101/part-00000
/home/wangcongying/test/20181101/part-00001
/home/wangcongying/test/20181101/part-00002
/home/wangcongying/test/20181101/part-00003
/home/wangcongying/test/20181101/part-00004
/home/wangcongying/test/20181101/part-00005
/home/wangcongying/test/20181101/part-00006
/home/wangcongying/test/20181101/part-00007
/home/wangcongying/test/20181101/part-00008
/home/wangcongying/test/20181101/part-00009
设置一下几个多路输入问题:
- 输入
20181101
-20181109
所有目录下的文件 - 输入
20181101
以及otherFile
目录下的所有文件 - 输入
20181101
以及otherFile
目录下的前五个part
1. 使用通配符*
使用通配符*
是最简单的方法,下面将给出几个简单常用的示例:
解决方案:
- 输入
20181101
-20181109
所有目录下的文件
-input /home/wangcongying/test/2018110[1-9]
- 输入
20181101
以及otherFile
目录下的所有文件
-input /home/wangcongying/test/{20181101,otherFile}
- 输入
20181101
以及otherFile
目录下的前五个part
-input /home/wangcongying/test/{20181101,otherFile}/part-0000[0-4]
2. 逗号分割
- 输入
20181101
-20181109
所有目录下的文件
-input /home/wangcongying/test/20181101,/home/wangcongying/test/20181102,/home/wangcongying/test/20181103,/home/wangcongying/test/20181104,/home/wangcongying/test/20181105,/home/wangcongying/test/20181106,/home/wangcongying/test/20181107,/home/wangcongying/test/20181108,/home/wangcongying/test/20181109
- 输入
20181101
以及otherFile
目录下的所有文件
-input /home/wangcongying/test/20181101,/home/wangcongying/test/otherFile
- 输入
20181101
以及otherFile
目录下的前五个part
-input /home/wangcongying/test/20181101/part-0000[0-4],/home/wangcongying/test/otherFile/part-0000[0-4]
3. 输入数组形式
- 输入
20181101
-20181109
所有目录下的文件
input_file=("/home/wangcongying/test/2018110[1-9]")
...
...
Hadoop streaming ...
...
-input ${input_file[@]}
...
- 输入
20181101
以及otherFile
目录下的所有文件
input_file=("/home/wangcongying/test/20181101"
"/home/wangcongying/test/otherFile")
...
...
Hadoop streaming ...
...
-input ${input_file[@]}
...
- 输入
20181101
以及otherFile
目录下的前五个part
input_file=("/home/wangcongying/test/20181101/part-0000[0-4]"
"/home/wangcongying/test/otherFile/part-0000[0-4]")
...
...
Hadoop streaming ...
...
-input ${input_file[@]}
...
4. 总结
在使用的时候可以两两或者三个混合使用,具体根据需求来实现即可。
- Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)
- 基础篇章:关于 React Native 之 ToolbarAndroid 组件的讲解
- Android M 权限最佳实践
- Android自定义ViewGroup神器-ViewDragHelper
- Android 中常见的内存泄漏
- Android 高级自定义Toast及源码解析
- 环境配置:React Native 开发环境配置 For Android
- 美团多渠道打包方案详解,速度快到白驹过隙
- 下一代Android渠道打包工具
- 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- 我的第一个小程序(Discuz! + 微信小程序)
- 微信小程序 wx.request 的封装
- 如何用Python爬虫实现百度图片自动下载?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 句法错误:"SyntaxError: invalid character in identifier",原因及解决方法
- Python3 多线程问题:ModuleNotFoundError: No module named 'thread',原因及解决办法。
- 文件传输和秒传
- 关于数据库的各种备份与还原姿势详解
- Python 技术篇-多线程的2种创建方法,多线程的简单用法,快速上手。
- Python 技术篇-调用浏览器访问指定网页,一行代码实现。非Selenium。
- 数据库热备份神器 - XtraBackup
- Python 技术篇-读取文件,将内容保存dict字典中。去掉字符串中的指定字符方法。dict字典的遍历。
- PyQt5 技术篇-plainTextEdit控件获得文本内容方法、设置文本内容方法。
- PyQt5 技术篇-鼠标移动控件显示提示,Qt Designer控件提示设置方法。
- PyQt5 技术篇-窗口名、窗口图标的设置方法。
- 101个shell脚本
- PyQt5 图片兼容性问题:"libpng warning: bKGD: invalid.",原因及解决办法。
- 编程语言经典小例题—Python版【持续更新】
- Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。