hadoop 基础及 hive 入        门
目录 Hadoop   前言介绍   例子   MR 框架             Hive   工作案例       前言介绍               基本模型               数据类型           ...
Hadoop 前言介绍 例子 MR 框架 工作案例
hadoop 分布式海量数据处理工具 成本低   服务器的成本低了,但不能忽略其他资源成本 可扩展性  加服务器
为什么使用 hadoop 秦始皇统一中国的外交政策“远交近攻 , 各个击破” 分而治之—分治算法
hadoop 计算模型 MapReduce 基于“分而治之”的思想,将计 算任务抽象成 map 和 reduce 两个计算过程
hadoop 例子 -splitDate   将数据日志按日期切割存储
hadoop 例子 -splitDate    Map 端操作         public void map(LongWritable key, Text value,) {         String str_key = new Str...
MR 框架 MAP 类 Reduce 类 Run 参数
Map 类public class MapReduce extends Configured implements  tool {  public static class Map extends MapReduceBase      impl...
Reduce 类public class Reduce extends MapReduceBase implements  Reducer <Text, Text, Text, Text> {       // 初始化       public...
Run 参数    public int run(String[] args) throws Exception {    /*    指定输入 / 输出文件路径;    文件对应的 map 函数、 reduce 函数;输入 / 输出格式   ...
工作案例 - 文件切割 需求情景 程序后台将所有数据 log 打包成一个日志文件, 数据处理时需要切分不同的数据 log ,然后进行 对应的处理和计算
工作案例 - 文件切割• 解决方法 import org.apache.hadoop.mapred.lib.MultipleOutputs
工作案例 - 文件编码 需求情景 程序数据 log 为 gbk 编码, hadoop 默认文本 utf-8 编码,如何兼容
工作案例 - 文件编码• 解决方法 1 、文件 put 进 hadoop 之前做编码转换    iconv –f gbk –t utf-8 inputFile 2 、自定义 outputFormat 类
工作案例 - 数据解析 字段分隔符 csv 文件, t 分隔符文件,空格分隔符文 件 map.output.field.separator reduce.output.field.separator
工作案例 - 数据解析 二进制文件 二进制编码转成文本编码 hex 进制 base64 uuencode
工作案例 - 数据解析 自定义 InputSplit 和 RecordReader 数据格式是演变的 归根到底,无论数据格式如何,需要能够解析对 应记录和字段
工作案例 - 配置文件 需求情景 需要引入经常修改变化的策划配置表单
工作案例 - 配置文件• 解决方法 import org.apache.hadoop.filecache.DistributedCache //job 配置参数   public int run(String[] args) throws Ex...
万众期待的时刻到了  课间休息十分钟
hive 前言介绍 基本模型 数据类型 语句 改进 特性
hive 结构化数据文件映射
为什么使用 hive 提高效率。 一行 hive 语句实现的功能,可能需要几十行 hadoop 语句实现 方便分析人员
hive 基本模型 物理数据模型 wh: /wh Table: /wh/pvs Partition: /wh/pvs/ds=20090801/ctry=CA Buckets:/wh/pvs/ds=20090801/ctry=US/part-0...
Hive 基本数据类型 Intergers Boolean Floating String
Hive 复杂数据类型 Structs Array Maps Timestamp support in version 0.8 Binary support in version 0.8
数据类型之题外话 结构化数据与非结构化数据
Hive 语句 QUERIES  SELECT …. FROM …..WHERE……  GROUP BY….ORDER BY….LIMIT  JOIN DDL  database 、 table(location 、 Partitions)...
Hive 改进 Not support Multi-distinct bash:       cat t_mall_buy.txt | awk ‘{print uid}’ | sort | uniq | wc –l       cat t_m...
Hive 改进 不支持 exists in 子查询 support NOT IN and NOT LIKE syntax in version 0.8 Not support Index Not available until 0.7 re...
Hive 特性 Multi Table/File Inserts  FROM pv_users  INSERT OVERWRITE TABLE pv_gender_sum  SELECT pv_users.gender,  INSERT OV...
The End
Upcoming SlideShare
Loading in...5
×

Hadoop基础及hive入门

3,305

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,305
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Hadoop基础及hive入门

  1. 1. hadoop 基础及 hive 入 门
  2. 2. 目录 Hadoop  前言介绍  例子  MR 框架  Hive  工作案例  前言介绍  基本模型  数据类型  语句  改进  特性
  3. 3. Hadoop 前言介绍 例子 MR 框架 工作案例
  4. 4. hadoop 分布式海量数据处理工具 成本低 服务器的成本低了,但不能忽略其他资源成本 可扩展性 加服务器
  5. 5. 为什么使用 hadoop 秦始皇统一中国的外交政策“远交近攻 , 各个击破” 分而治之—分治算法
  6. 6. hadoop 计算模型 MapReduce 基于“分而治之”的思想,将计 算任务抽象成 map 和 reduce 两个计算过程
  7. 7. hadoop 例子 -splitDate 将数据日志按日期切割存储
  8. 8. hadoop 例子 -splitDate Map 端操作 public void map(LongWritable key, Text value,) { String str_key = new String(value.getBytes(), 0, value.getLength(), "UTF8").split(“t”)[t_when_index].split(“ “)[0]; out_key.set(str_key); out_value.set(t_value); output.collect(out_key, out_value); } Reduce 端操作 public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) { out = mos.getCollector(name, tmp + name, reporter); while(values.hasNext()){ out.collect(NullWritable.get(), values.next()); } }
  9. 9. MR 框架 MAP 类 Reduce 类 Run 参数
  10. 10. Map 类public class MapReduce extends Configured implements tool { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { // 初始化 public void configure(JobConf job) // 自定义函数 public void udf() public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) // 结束操作 public void close() }
  11. 11. Reduce 类public class Reduce extends MapReduceBase implements Reducer <Text, Text, Text, Text> { // 初始化 public void configure(JobConf job) // 自定义函数 public void udf() public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) // 结束操作 public void close() }
  12. 12. Run 参数 public int run(String[] args) throws Exception { /* 指定输入 / 输出文件路径; 文件对应的 map 函数、 reduce 函数;输入 / 输出格式 */ } /*tool 接口和 GenericOptionsParser 处理命令行选项 public static void main(String[] args) { int res = ToolRunner.run(new Configuration(), new DtwTokenJoin(), args); System.exit(res); }}
  13. 13. 工作案例 - 文件切割 需求情景 程序后台将所有数据 log 打包成一个日志文件, 数据处理时需要切分不同的数据 log ,然后进行 对应的处理和计算
  14. 14. 工作案例 - 文件切割• 解决方法 import org.apache.hadoop.mapred.lib.MultipleOutputs
  15. 15. 工作案例 - 文件编码 需求情景 程序数据 log 为 gbk 编码, hadoop 默认文本 utf-8 编码,如何兼容
  16. 16. 工作案例 - 文件编码• 解决方法 1 、文件 put 进 hadoop 之前做编码转换 iconv –f gbk –t utf-8 inputFile 2 、自定义 outputFormat 类
  17. 17. 工作案例 - 数据解析 字段分隔符 csv 文件, t 分隔符文件,空格分隔符文 件 map.output.field.separator reduce.output.field.separator
  18. 18. 工作案例 - 数据解析 二进制文件 二进制编码转成文本编码 hex 进制 base64 uuencode
  19. 19. 工作案例 - 数据解析 自定义 InputSplit 和 RecordReader 数据格式是演变的 归根到底,无论数据格式如何,需要能够解析对 应记录和字段
  20. 20. 工作案例 - 配置文件 需求情景 需要引入经常修改变化的策划配置表单
  21. 21. 工作案例 - 配置文件• 解决方法 import org.apache.hadoop.filecache.DistributedCache //job 配置参数 public int run(String[] args) throws Exception { DistributedCache.addCacheFile(new Path(args[+ +i]).toUri(), conf); } // 读取配置文件 config_files = DistributedCache.getLocalCacheFiles(job); BufferedReader fis = new BufferedReader(new FileReader(config_file.toString()));
  22. 22. 万众期待的时刻到了 课间休息十分钟
  23. 23. hive 前言介绍 基本模型 数据类型 语句 改进 特性
  24. 24. hive 结构化数据文件映射
  25. 25. 为什么使用 hive 提高效率。 一行 hive 语句实现的功能,可能需要几十行 hadoop 语句实现 方便分析人员
  26. 26. hive 基本模型 物理数据模型 wh: /wh Table: /wh/pvs Partition: /wh/pvs/ds=20090801/ctry=CA Buckets:/wh/pvs/ds=20090801/ctry=US/part-00000 逻辑数据模型 External Table 版本迭代 0.5 0.7 0.8
  27. 27. Hive 基本数据类型 Intergers Boolean Floating String
  28. 28. Hive 复杂数据类型 Structs Array Maps Timestamp support in version 0.8 Binary support in version 0.8
  29. 29. 数据类型之题外话 结构化数据与非结构化数据
  30. 30. Hive 语句 QUERIES SELECT …. FROM …..WHERE…… GROUP BY….ORDER BY….LIMIT JOIN DDL database 、 table(location 、 Partitions) funciton 、 index 、 view DML Loading files into tables Inserting data into Hive Tables from queries Writing data into filesystem from queries
  31. 31. Hive 改进 Not support Multi-distinct bash: cat t_mall_buy.txt | awk ‘{print uid}’ | sort | uniq | wc –l cat t_mall_buy.txt | awk ‘{print urs}’ | sort | uniq | wc –l mysql : SELECT count(distinct uid), count(distint urs) FROM t_mall_buy hive: SELECT count(distinct uid) FROM t_mall_buy SELECT count(distinct urs) FROM t_mall_buy 补丁支持 https://issues.apache.org/jira/browse/HIVE-287 https://issues.apache.org/jira/browse/HIVE-474
  32. 32. Hive 改进 不支持 exists in 子查询 support NOT IN and NOT LIKE syntax in version 0.8 Not support Index Not available until 0.7 release Not support Insert into INSERT INTO syntax is only available starting in version 0.8
  33. 33. Hive 特性 Multi Table/File Inserts FROM pv_users INSERT OVERWRITE TABLE pv_gender_sum SELECT pv_users.gender, INSERT OVERWRITE DIRECTORY /user/data/tmp/pv_age_sum SELECT pv_users.age Custom map/reduce scripts transform(hostnum, res_type, event_type, direct, counts) using python ods_wh_economic_money_week.py‘ as (hostnum,res_type,output_type,output_name,counts,isoutput) UDFS & UDAFS 尽量使用 UDF 而不是 transform
  34. 34. The End
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×