Hadoop基础及hive入门
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,979
On Slideshare
3,979
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
41
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. hadoop 基础及 hive 入 门
  • 2. 目录 Hadoop  前言介绍  例子  MR 框架  Hive  工作案例  前言介绍  基本模型  数据类型  语句  改进  特性
  • 3. Hadoop 前言介绍 例子 MR 框架 工作案例
  • 4. hadoop 分布式海量数据处理工具 成本低 服务器的成本低了,但不能忽略其他资源成本 可扩展性 加服务器
  • 5. 为什么使用 hadoop 秦始皇统一中国的外交政策“远交近攻 , 各个击破” 分而治之—分治算法
  • 6. hadoop 计算模型 MapReduce 基于“分而治之”的思想,将计 算任务抽象成 map 和 reduce 两个计算过程
  • 7. hadoop 例子 -splitDate 将数据日志按日期切割存储
  • 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. MR 框架 MAP 类 Reduce 类 Run 参数
  • 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. 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. 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. 工作案例 - 文件切割 需求情景 程序后台将所有数据 log 打包成一个日志文件, 数据处理时需要切分不同的数据 log ,然后进行 对应的处理和计算
  • 14. 工作案例 - 文件切割• 解决方法 import org.apache.hadoop.mapred.lib.MultipleOutputs
  • 15. 工作案例 - 文件编码 需求情景 程序数据 log 为 gbk 编码, hadoop 默认文本 utf-8 编码,如何兼容
  • 16. 工作案例 - 文件编码• 解决方法 1 、文件 put 进 hadoop 之前做编码转换 iconv –f gbk –t utf-8 inputFile 2 、自定义 outputFormat 类
  • 17. 工作案例 - 数据解析 字段分隔符 csv 文件, t 分隔符文件,空格分隔符文 件 map.output.field.separator reduce.output.field.separator
  • 18. 工作案例 - 数据解析 二进制文件 二进制编码转成文本编码 hex 进制 base64 uuencode
  • 19. 工作案例 - 数据解析 自定义 InputSplit 和 RecordReader 数据格式是演变的 归根到底,无论数据格式如何,需要能够解析对 应记录和字段
  • 20. 工作案例 - 配置文件 需求情景 需要引入经常修改变化的策划配置表单
  • 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. 万众期待的时刻到了 课间休息十分钟
  • 23. hive 前言介绍 基本模型 数据类型 语句 改进 特性
  • 24. hive 结构化数据文件映射
  • 25. 为什么使用 hive 提高效率。 一行 hive 语句实现的功能,可能需要几十行 hadoop 语句实现 方便分析人员
  • 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. Hive 基本数据类型 Intergers Boolean Floating String
  • 28. Hive 复杂数据类型 Structs Array Maps Timestamp support in version 0.8 Binary support in version 0.8
  • 29. 数据类型之题外话 结构化数据与非结构化数据
  • 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. 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. 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. 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. The End