Hadoop去掉格,换行符,制表符,回车符,换页符【好吧,其实用正则表达式一下子就搞定了】
第一步:将文档中的空格,换行符(\n),制表符(\t),回车符(\n),换页符(\f)去掉
这时候可以采用两种方法
1.使用Hadoop将文本以默认的分隔符(空格,换行符,制表符,回车符,换页符)进行分割,并将分割后的字符串直接输出,这样子新的文档中将不包括这些分隔符。
/**这里在Map中去除空格、tab、回车等*/
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;public class Standardization {public static class TokenizerMapperextends Mapper<Object, Text, Text, IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {//默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”,换页(‘\f’)StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);//将分隔分割成功的文本直接输出就排除了这些分隔符}}}public static class IntSumReducerextends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable result = new IntWritable(1);public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {PrintWriter outputStream=null;//这个被创建的文件将在jar所在目录下生成,而不会在存在于dfstry{outputStream =new PrintWriter(new FileOutputStream("out.txt",true));}catch(FileNotFoundException e){System.out.println("没有权限");System.exit(0);}outputStream.print(key.toString());outputStream.close();context.write(key,result);//而这里的内容将被卸载dfs上}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length < 2) {System.err.println("Usage: wordcount <in> [<in>...] <out>");System.exit(2);}Job job = new Job(conf, "word count");job.setJarByClass(Standardization.class);job.setMapperClass(TokenizerMapper.class);//这里并没有配置shufflejob.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);for (int i = 0; i < otherArgs.length - 1; ++i) {FileInputFormat.addInputPath(job, new Path(otherArgs[i]));}FileOutputFormat.setOutputPath(job,new Path(otherArgs[otherArgs.length - 1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}
以上代码可以执行并得到所需结果,但有一个缺点是会将输入文件中的文字的顺序打乱即输出文件中的文字顺序和输入文件的不同。
这是由于在shuffle过程中对map的输出 重新进行了排序,如果是英文的话是按照a-z的字母表顺序。、
另外执行hadoop程序可借助shell编程,减少重复敲代码。而shell中的内容直接写命令即可。
Hadoop去掉格,换行符,制表符,回车符,换页符【好吧,其实用正则表达式一下子就搞定了】相关推荐
- python 结尾回车_理解不了Python正则表达式?我帮你搞定
点击蓝字"python教程"关注我们哟! 在学习Python的过程中,我们难免会遇到比较晦涩.难以理解的内容,比如Python中的正则表达式.面向对象等内容,为了更好地帮助大家理解 ...
- closewait一直不释放_家里甲醛一直去不掉,原来是原理弄错了!跟邻居学来这一招搞定...
甲醛是室内空气的主要污染物之一,我们有80%的时间都在室内,而甲醛的释放周期为3-15年,长时间暴露在甲醛环境下不仅会引起慢性疾病,还会对免疫功能.中枢神经系统造成永久性伤害. 研究显示,甲醛浓度与来 ...
- c语言回车换行符的作用,C语言中回车符和回车换行符有什么区别
2016-08-12 15:35齐景坤 客户经理 C语言中的getchar, scanf, putchar, printf学习 [摘要:输进战输出功效并非C说话自身的构成局部,他们属于规范库局限,应用 ...
- C# 字符串去除制表符回车符换行符
#region 字符串去除制表符回车符换行符 public string strChar(string Str) { s ...
- oracle 去空格 换行符,ORACLE:除去回车符,换行符
T-SQL的回车和换行符(SQL) T-SQL的回车和换行符(SQL) sql server中的回车换行字符是 char(13)+char(10) 回车:char(13) 换行:char(10) 实 ...
- c语言中换行符与回车符的区别,C语言中换行符与回车符的区别
本文章详细介绍了回车与换行符的由来和区别.讲解,通俗易懂,可以使自己深入理解它们 C语言中换行符与回车符的区别 能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而 ...
- 匹配包含换行符(回车)的任意字符串的正则表达式
匹配包含换行符(回车)的任意字符串的正则表达式 正则表达式Java 匹配包含换行符(回车)的任意字符串的正则表达式 1) [\s\S] 2) Pattern.DOTALL \s 匹配字符串的过 ...
- c语言中不用换行读符而直接换行,C语言中换行符与回车符的区别
1.C 语言中换行符与回车符的区别能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而"回车符就是输入完一行后光标转到该行的起始位置,其并不换行" ...
- 替换SQL字段中的换行符,回车符
替换SQL字段中的换行符,回车符: 在富文本内容中通常会出现回车.换行内容.在sql数据库中这些回车.换行符,输出html后,表现为空格. 这里是在数据导出.导入中发现的,通常把回车.换行符找出来,用 ...
- oracle怎么查询换行符,oracle 回车、换行符
oracle 回车.换行符 alc sla mit style not lin date 情况 回车 回车换行符 chr(10)是换行符, chr(13)是回车, 增加 ...
最新文章
- SpringMVC(三):使用 POJO 对象绑定请求参数值
- 深夜文献:2021腾讯科技WE大会硬核复习资料,看看如何烧脑?
- Linux系统编程——线程私有数据
- 01 决策树 - 数学理论概述 - 熵
- Scapy之ARP询问
- Java 8中的HashMap性能改进
- 在WORD中删除中文或英文
- 为什么别人靠聊天找到了女朋友?因为他会这三招
- 加州伯克利本科学计算机好吗,美国加州大学伯克利分校和卡耐基梅隆大学计算机科学CS专业哪个好?...
- 基于STM32数码相册
- Git下载安装及基本配置
- 谷粒商城学习笔记(一)
- 5990. 找出数组中的所有孤独数字
- python写入文件没反应_Python write 函数写文件失败
- 各种复杂网络处理工具
- 数组下标越界异常是如何产生的
- 压抑的西安互联网环境,你有纠结辞职吗?
- 攻防兼备:中国蚁剑使用指南及特征流量
- Google Play的QUERY_ALL_PACKAGES或REQUEST_INSTALL_PACKAGES权限问题
- 华为快应用IDE:如何使用卡片