博客园  :: 首页  :: 联系 :: 管理

读书笔记-Hadoop实战-6

Posted on 2012-09-06 21:01  Apprentice89  阅读(285)  评论(0编辑  收藏  举报

注:之前写过MapReduce程序,所以对Hadoop和MapReduce编程有一些了解,现在正在阅读《Hadoop实战》一书,这里主要是记下对自己有用的一些点,完全不能覆盖书中的全部要点。想要学习MapReduce入门的同学请移尊步,勿浪费时间。

这里是我觉得不错的几个入门文章:

http://www.cnblogs.com/forfuture1978/category/300670.html

http://blog.csdn.net/aidayei/article/details/6580277

http://www.cnblogs.com/mdyang/category/307547.html

http://www.cnblogs.com/wycg1984/category/238035.html

-----------------------------------------------------------敌我分割线------------------------------------------------------------

 

向任务传递作业定制的参数

Configuration类(JobConf的父类)有通用的setter方法来设置属性值,属性以键值对形式存储,键是String类型,值可以是常用类型的一种。例如:

         myJobConf.setInt(“myjob.myproperty”, Integer.parseInt(args[2]));

使用时取出该值:在Mapper/Reducer的configure函数中

    public void configure(JobConf conf){
        int v = conf.getInt(“myjob.myproperty”, 0);
    }

 

除了获取定制的参数,还可以获取JobConf中的其他一些配置信息。

 

划分为多个输出

继承MultipleOutputFormat,并实现函数

protected String generateFileNameForKeyValue(K k, V v, String name);

这样就能使每一个kv对的结果写入该返回值对应的名字的文件中了。

 

 

使用数据库:

DBOutputFormat是用于访问数据库的关键类。在driver中将输出格式设置为这个类。配置可以通过DBConfiguration来设置:

public static void congifureDB(JobConf job,String driveClass,String dbUrl,String userName,String passwd);

指定写入的表及字段,通过DBOutputFormat的setOutput方法:

public static void setOutput(JobConf job, String tableName, String… fieldNames);

 

使用DBOutputFormat使得输出键实现DBWritable接口。只有这个键被写到数据库。容易知道,write和read函数必须使用 PreparedStatement和ResultSet来实现序列化。

 

 

感兴趣的Hadoop上的一些子项目:

Pig:Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。http://www.cnblogs.com/skyme/archive/2012/06/04/2534876.html

 

Hive: hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

 

Hama和Mahout:

Hama是矩阵计算软件包,用于计算乘机、逆、特征值、特征向量和其他矩阵运算。Mahout更专门针对基于Hadoop实现机器学习算法,如Naïve Bayes,k-means聚类,协同过滤等。

 

--------END--------