美文网首页我爱编程
大数据系统编程Tip

大数据系统编程Tip

作者: TechGraver | 来源:发表于2018-05-16 22:40 被阅读0次

大数据系统编程中,总会有一些意想不到的地方,开个帖子记录📝一下。

hadoop MapReduce

编程中主函数各语句的用法:

public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {

        Configuration conf = new Configuration();
//创建Hadoop conf对象,,其构造方法会默认加载hadoop中的两个配置文件,分别是hdfs-site.xml以及core-site.xml,这两个文件中会有访问hdfs所需的参数值,主要是fs.default.name,指定了hdfs的地址,有了这个地址客户端就可以通过这个地址访问hdfs了。即可理解为configuration就是hadoop中的配置信息。    
    
   
        String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
//GenericOptionsParser是hadoop框架中解析命令行参数的基本类。它能够辨别一些标准的命令行参数,能够使应用程序轻易地指定namenode,jobtracker,以及其他额外的配置资源。
       
    
        if(otherArgs.length !=2){
            System.out.println("Usage: Hw2Part1 <in> <out>");
            System.exit(2);
        }

        //Job job = new Job(conf,"Hw2Part1");
        conf.set(" mapred.textoutputformat.separator", " ");
//MapReduce默认的key-value的分隔符为tab,这样输出过程中会导致格式不规律,即key1 key2 tab value1 value2... 可以通过这个语句,设定最后输出时,key value之间的分隔符为空格 
    
    
        Job job = Job.getInstance(conf,"Hw2Part1");
    
        job.setJarByClass(Hw2Part1.class);
        job.setMapperClass(SourceMapper.class);
        job.setReducerClass(TimeReducer.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);


        //FileInputFormat.addInputPath(job,new Path(otherArgs[0]));
        //FileOutputFormat.setOutputPath(job,new Path(otherArgs[1]));

        for (int i = 0; i < otherArgs.length - 1; ++i) {
            FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
        }

        // add the output path as given by the command line
        FileOutputFormat.setOutputPath(job,
        new Path(otherArgs[otherArgs.length - 1]));
        //对输入路径和输出路径进行处理
        
        System.exit(job.waitForCompletion(true) ? 0 : 1);
        //此句是对job进行提交,一般情况下我们提交一个job都是通过job.waitForCompletion方法提交,该方法内部会调用job.submit()方法


    }

参考

http://www.cnblogs.com/caoyuanzhanlang/archive/2013/02/21/2920934.html

MapReduce编程中引用包的问题

import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

mapred代表的是hadoop旧API,而mapreduce代表的是hadoop新的API

对于mapred来说,FileInputFormat.setInputPaths(jobConf, in);第一个参数是jobConf

对于mapreduce来说,FileInputFormat.setInputPaths(jobConf, in);第一个参数是job

相关文章

  • 大数据系统编程Tip

    大数据系统编程中,总会有一些意想不到的地方,开个帖子记录?一下。 hadoop MapReduce 编程中主函数各...

  • java开源项目收集

    github项目地址: https://github.com/jcalaz/tip tip整合了自己学习编程的资源...

  • 2018-09-14 面向对象编程的第一天

    tip:蓝色部分为专业名词 1.名词解释 定义: 一种具有对象概念的程序编程典范,它可能包含数据、属性、代码与方法...

  • 兄弟连Go语言培训分享Go协程测试

    Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面...

  • go语言能做什么

    Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面...

  • P8架构师告诉你身为程序员必备的技能之一TCP/IP网络编程

    网络编程:操作系统+系统编程知识+TCP/IP网络数据传输协议大部分软件是基于网络环境开发的,因此,网络编程成为程...

  • 4.4 Logic Programming-笔记

    逻辑编程 查询系统通过在数据库中存储断言,并通过查询语句推演查询结果。而操作查询系统的编程语言就是逻辑编程,它能够...

  • 2-Linux操作系统的发展与演变

    Liunx操作系统发展与演变 ENIARC: 程序: 指令+数据 算法+数据结构 过程式编程语言 操作系统的功能:...

  • ARTS 06

    Algorithm 74. 搜索二维矩阵Review Lambdas不是函数式编程Tip TCP的...

  • 2017年10月24日

    大数据系统基础 4.7-4.14《Hive编程指南》第1章《Hive编程指南》第2章《Hive编程指南》第3章

网友评论

    本文标题:大数据系统编程Tip

    本文链接:https://www.haomeiwen.com/subject/aoqmdftx.html