我的编程空间,编程开发者的网络收藏夹
学习永远不晚

hadoop如何自定义格式化输出

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

hadoop如何自定义格式化输出

这篇文章给大家分享的是有关hadoop如何自定义格式化输出的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

import java.io.IOException;import java.net.URI;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.RecordWriter;import org.apache.hadoop.mapreduce.TaskAttemptContext;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class CustomizeOutputFormat {static final Log LOG = LogFactory.getLog(CustomizeOutputFormat.class);public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(CustomizeOutputFormat.class);job.setMapperClass(CustMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);//此处这只自定义的格式化输出job.setOutputFormatClass(CustOutputFormat.class);String jobName = "Customize outputformat test!";job.setJobName(jobName);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));boolean b = job.waitForCompletion(true);if(b) {LOG.info("Job "+ jobName +" is done.");}else {LOG.info("Job "+ jobName +"is going wrong,now exit.");System.exit(0);}}}class CustMapper extends Mapper<LongWritable, Text, Text, Text>{String[] textIn = null;Text outkey = new Text();Text outvalue = new Text();@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context)throws IOException, InterruptedException {textIn = value.toString().split("\t");outkey.set(textIn[0]);outvalue.set(textIn[1]);context.write(outkey, outvalue);}}//自定义OutoutFormatclass CustOutputFormat extends FileOutputFormat<Text, Text>{@Overridepublic RecordWriter<Text, Text> getRecordWriter(TaskAttemptContext context) throws IOException, InterruptedException {//获得configrationConfiguration conf = context.getConfiguration();//获得FileSystemFileSystem fs =  FileSystem.newInstance(conf);//获得输出路径Path path = CustOutputFormat.getOutputPath(context);URI uri = path.toUri();//创建两个文件,得到写入流FSDataOutputStream foa = fs.create(new Path(uri.toString()+"/out.a"));FSDataOutputStream fob = fs.create(new Path(uri.toString()+"/out.b"));//创建自定义RecordWriter  传入 两个流CustRecordWriter rw = new CustRecordWriter(foa,fob);return rw;}class CustRecordWriter extends RecordWriter<Text, Text>{ FSDataOutputStream foa = null; FSDataOutputStream fob = null;CustRecordWriter(FSDataOutputStream foa,FSDataOutputStream fob){this.foa = foa;this.fob = fob;}@Overridepublic void write(Text key, Text value) throws IOException, InterruptedException {String mText  = key.toString();//根据可以长度的不同分别输入到不同的文件if(mText.length()>=5) {foa.writeUTF(mText+"\t"+value.toString()+"\n");}else {fob.writeUTF(mText+"\t"+value.toString()+"\n");}}@Overridepublic void close(TaskAttemptContext context) throws IOException, InterruptedException {//最后将两个写入流关闭if(foa!=null) {foa.close();}if(fob!=null) {fob.close();}}}}//使用MultipleInputs,c处理多个来源的文件package hgs.multipuleinput;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.input.MultipleInputs;import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import hgs.custsort.SortBean;import hgs.custsort.SortDriver;import hgs.custsort.SortMapper;import hgs.custsort.SortReducer;public class MultipuleInputDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(SortDriver.class);job.setMapperClass(SortMapper.class);job.setReducerClass(SortReducer.class);job.setOutputKeyClass(SortBean.class);job.setOutputValueClass(NullWritable.class);MultipleInputs.addInputPath(job, new Path("/sort"), TextInputFormat.class,SortMapper.class);MultipleInputs.addInputPath(job, new Path("/sort1"), TextInputFormat.class,SortMapper.class);//FileInputFormat.setInputPaths(job, new Path("/sort"));FileOutputFormat.setOutputPath(job, new Path("/sortresult"));System.exit(job.waitForCompletion(true)==true?0:1);}}

感谢各位的阅读!关于“hadoop如何自定义格式化输出”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

hadoop如何自定义格式化输出

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

hadoop如何自定义格式化输出

这篇文章给大家分享的是有关hadoop如何自定义格式化输出的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。import java.io.IOException;import java.net.URI;import
2023-06-02

Hadoop中怎么自定义输出排序

本篇文章为大家展示了Hadoop中怎么自定义输出排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。package com.hgs;import java.io.DataInput;import ja
2023-06-02

怎么在Python自定义日志输出格式

今天就跟大家聊聊有关怎么在Python自定义日志输出格式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scr
2023-06-14

python中如何格式化输出

这篇文章将为大家详细讲解有关python中如何格式化输出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言:有几种方法可以显示程序的输出。 数据可以以人类可读的形式打印,或写入文件以供将来使用,甚至可以以
2023-06-29

hadoop如何自定义分区

今天小编给大家分享一下hadoop如何自定义分区的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。分区概念分区这个词对很多同学来
2023-06-29

Linux如何定制History输出格式

这篇“Linux如何定制History输出格式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux如何定制History
2023-06-27

如何在Linux中格式化输出 JSON

这篇文章将为大家详细讲解有关如何在Linux中格式化输出 JSON,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,
2023-06-09

hadoop中mapreducez如何自定义分区

这篇文章主要为大家展示了“hadoop中mapreducez如何自定义分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hadoop中mapreducez如何自定义分区”这篇文章吧。packag
2023-06-02

Python中如何实现format()格式化输出

这篇文章主要为大家展示了“Python中如何实现format()格式化输出”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中如何实现format()格式化输出”这篇文章吧。format
2023-06-25

Linux系统如何定制History输出格式

Linux系统使用History命令来查看系统的运行记录,从而找出一些问题。但是History输出的数据中常常没有时间等信息。本文就来教大家Linux系统如何定制History输出格式。  具体方法如下以root用户登录服务器,在/etc/
2023-06-06

PHP如何输出格式化的字符串

这篇文章系统地介绍了PHP输出格式化字符串的多种方法,包括printf()、sprintf()、number_format()、date()、字符串插值和fputcsv(),提供示例以演示每种方法的使用和格式说明符的应用。通过掌握这些方法,开发者可以灵活地创建格式化的输出,满足不同类型的显示和数据处理需求。
PHP如何输出格式化的字符串
2024-04-02

Java如何输出格式化的字符串

Java中,可以使用printf()方法输出格式化的字符串,将格式化字符串与参数列表值相结合生成输出字符串。格式说明符指定参数格式化方式,格式化标志用于控制选项。宽度和精度可控制输出格式。转义序列表示不可打印字符。Locale对象控制输出格式化,指定语言和地区设置影响日期、数字、小数点格式。
Java如何输出格式化的字符串
2024-04-02

Python如何输出格式化的字符串

Python提供多种格式化字符串方法,如:字符串格式操作符(%)、format()方法和f-字符串。这些方法使变量值嵌入字符串变得容易,并创建整洁可读的输出。格式说明符指定插入值的格式,如字符串(%s、{})、整数(%d、{d})、浮点数(%f、{f})等。格式化还有助于提高输出清晰度、简化插入、控制格式选项和增强代码可维护性。
Python如何输出格式化的字符串
2024-04-02

java中如何格式化输出字符串

java中如何格式化输出字符串?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java字符串格式化输出@Test public void test() { // TODO
2023-05-31

Linux下如何定制History命令输出格式

本篇内容主要讲解“Linux下如何定制History命令输出格式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下如何定制History命令输出格式”吧!具体方法如下以root用户登录服
2023-06-27

python如何对变量进行格式化输出

本篇内容主要讲解“python如何对变量进行格式化输出”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何对变量进行格式化输出”吧!说明1、若要在输出文字信息的同时,共同输出数据,则需
2023-06-20

PHP如何把格式化的字符串写到指定的输出流

本篇教程细致讲解了PHP如何将格式化字符串写入指定输出流。介绍了多种方法,包括printf()、sprintf()、vsprintf()、fprintf()、fwrite()和fputs()函数。文中提供了示例代码,展示了如何使用这些函数来格式化字符串并输出到控制台或文件。此外,还包含了注意事项,提醒读者转义变量、匹配转换说明符和使用修饰符来控制格式。
PHP如何把格式化的字符串写到指定的输出流
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录