林慧数据部-大数据平台BI工程师Mail:Tel:WeChat:linhui@jd.com13621163211liz关于我大数据专家认证培训之技能篇--初级Tuesday,May06,2014林慧技能培训HADOOP与大数据HIVE-DDL(DataDefinitionLanguage)数据定义语言HIVE-DML(DataManipulationLanguage)数据操作语言Python知识简介目录技能培训大数据=4V数据量大(Volume)数据种类多样(Variety)要求实时性强(Velocity)商业价值大(Value)大数据技能培训HADOOP与大数据单位英语标识大小含义和例子位Bit1或0计算机用二进制存储和处理数据,1位是指一个二进制数位:0或1,这是存储信息的逻辑单元。字节Byte8Bit计算机存储信息的基本物理单位,存储一个英文字母在计算机上,其大小就是一个字节。千字节KB1024字节,或210个字节一页纸上的文字大概是5KB兆字节MB1024千字节,或220个字节一首普通MP3格式的流行歌曲大概是4MB吉字节GB1024兆字节,或230个字节一部电影大概是1GB太字节TB1024吉字节,或240个字节美国国会图书馆所有登记的印刷版书本的信息量为15TB,截至2011年年底,其网络备份的数据量为280TB,这个数据还在以每个月5TB的速度递增拍字节PB1024太字节,或250个字节美国邮政局一年处理的信件大约为5PB,Google每小时处理的数据约为1PB艾字节EB1024拍字节,或260个字节相当于13亿中国人人手一本500页的书加起来的信息量泽字节ZB1024艾字节,或270个字节截至2010年,人类拥有的信息总量大概是1.2ZB尧字节YB1024尧字节,或280个字节超出想象,难以描述来源:涂子沛《大数据》技能培训HADOOP与大数据•JDW数据存储总量6.07P•集群服务器数量600台•大数据平台数据吞吐总量100T•常规作业任务数量20000+•ETL覆盖京东系统个数500+•对外支持系统个数100+•大数据平台用户数1000+技能培训什么是HADOOPHadoop是一个能够对大量数据进行分布式处理的开源计算框架Hadoop假设和目标硬件错误是常态大数据集流式数据访问简单的一致性模型移动计算环境比移动数据划算跨硬件和软件平台的移动HADOOP与大数据更多信息参考百度百科:hadoop技能培训HADOOP与大数据(HadoopDistributedFileSystem)Hadoop集群包含一个NameNode和大量DataNode。技能培训HADOOP与大数据Hadoop读文件内部工作机制技能培训HADOOP与大数据Hadoop写文件内部工作机制技能培训HADOOP与大数据更多信息参考百度百科:MapReduce技能培训HADOOP与大数据技能培训HADOOP与大数据技能培训HIVE-DDLHive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。Hive没有专门的数据格式。Hive可以很好的工作在Thrift之上,控制分隔符,也允许用户指定数据格式。关于HiveHIVE处理,转换为MapReduceHDFSHDFSMapReduce运行用户发出SQL命令提交任务到Hadoop技能培训HIVE-DDLHive的特点•可扩展Hive可以自由的扩展集群的规模,一般情况下不需要重启服务•延展性Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数•容错良好的容错性,节点出现问题SQL仍可完成执行技能培训HIVE-DDLHive的四种数据模型•Database相当于关系数据库里的命名空间(namespace),它的作用是将用户和数据库的应用隔离到不同的数据库或模式中,该模型在hive0.6.0之后的版本支持,hive提供了createdatabasedbname、usedbname以及dropdatabasedbname这样的语句。•表(table)hive的表逻辑上由存储的数据和描述表格中的数据形式的相关元数据组成。表存储的数据存放在分布式文件系统里,例如HDFS,元数据存储在关系数据库里,当我们创建一张hive的表,还没有为表加载数据的时候,该表在分布式文件系统,例如hdfs上就是一个文件夹(文件目录)。Hive里的表有两种类型一种叫托管表,这种表的数据文件存储在hive的数据仓库里,一种叫外部表,这种表的数据文件可以存放在hive数据仓库外部的分布式文件系统上,也可以放到hive数据仓库里(注意:hive的数据仓库也就是hdfs上的一个目录,这个目录是hive数据文件存储的默认路径,它可以在hive的配置文件里进行配置,最终也会存放到元数据库里)。•分区(partition)hive里分区的概念是根据“分区列”的值对表的数据进行粗略划分的机制,在hive存储上就体现在表的主目录(hive的表实际显示就是一个文件夹)下的一个子目录,这个文件夹的名字就是我们定义的分区列的名字,没有实际操作经验的人可能会认为分区列是表的某个字段,其实不是这样,分区列不是表里的某个字段,而是独立的列,我们根据这个列存储表的里的数据文件。使用分区是为了加快数据分区的查询速度而设计的,我们在查询某个具体分区列里的数据时候没必要进行全表扫描。•桶(bucket)bucket是对数据源数据文件本身来拆分数据。使用桶的表会将源数据文件按一定规律拆分成多个文件,要使用bucket,我们首先要打开hive对桶的控制。技能培训HIVE-DDL1.HQL的基本数据类型及相互转换;2.Hive建表方法(压缩表和非压缩表);3.表定义修改常用语法:altertablechange/replace等;(DataDefinitionLanguage)数据定义语言知识点技能培训HIVE-DDL1.HQL的基本数据类型及相互转换;时间戳支持传统的unix时间戳,可选的纳秒级精度。支持的转换:•整型数值类型:解读为以秒为单位的UNIX时间戳•浮动点数值类型:解读为以秒和小数精度为单位的UNIX时间戳。•字符串:JDBC兼容的java.sql.Timestamp格式“YYYY-MM-DDHH:MM:SS.fffffffff”(9位小数位精度)基本数据类型类型描述示例TINYINT1个字节(8位)有符号整数1SMALLINT2字节(16位)有符号整数1INT4字节(32位)有符号整数1BIGINT8字节(64位)有符号整数1FLOAT4字节(32位)单精度浮点数1.0DOUBLE8字节(64位)双精度浮点数1.0BOOLEANtrue/falsetrueSTRING字符串‘xia’,”xia”日期都是用字符串来表示技能培训HIVE-DDL类型转换1、cast(字段名or具体值as指定类型)selectcast(1asdouble)fromtmp.dual;1.02、日期转换(1)date_format:日期带杠不带杠之间的转换。具体用法如下selectdate_format('20140502','yyyyMMdd','yyyy-MM-dd')fromtmp.dual;2014-05-02selectdate_format('2014050210:42:01','yyyyMMddHH:mm:ss','yyyy-MM-ddHH:mm:ss')fromtmp.dual;2014-05-0210:42:01(2)to_date:日期时间转日期函数。具体用法如下selectto_date('2014-05-0210:42:01')fromtmp.dual;2014-05-02(3)from_unixtime:UNIX时间戳转日期函数。具体用法如下selectfrom_unixtime(1399278078,'yyyyMMdd')fromtmp.dual;20140505(4)unix_timestamp:转换格式为yyyy-MM-ddHH:mm:ss的日期到UNIX时间戳。具体用法如下selectunix_timestamp('2014-05-0513:01:03')fromtmp.dual;1399266063(5)year、month、day:依次是日期转年、月、天。具体用法如下selectyear('2014-05-0413:01:03')year,month('2014-05-0413:01:03')month,day('2014-05-0413:01:03')dayfromtmp.dual;yearmonthday201454selectyear('2013-05-04')year,month('2013-05-04')month,day('2013-05-04')dayfromtmp.dual;yearmonthday201354(6)weekofyear:日期转周函数。具体用法如下selectweekofyear('2014-05-0510:03:01')fromtmp.dual;19技能培训HIVE-DDL2.Hive建表方法(压缩表和非压缩表);•一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。•创建表,有指定EXTERNAL就是外部表,没有指定就是内部表,内部表在drop的时候会从HDFS上删除数据,而外部表不会删除。•外部表和内部表一样,都可以有分区,如果指定了分区,那外部表建了之后,还要修改表添加分区。•外部表如果有分区,还可以加载数据,覆盖分区数据,但是外部表删除分区,对应分区的数据不会从HDFS上删除,而内部表会删除分区数据。•如果不指定数据库,hive会把表创建在default数据库下CREATEEXTERNALTABLEpage_view(viewTimeINT,useridBIGINT,page_urlSTRING,referrer_urlSTRING,ipSTRINGCOMMENT'IPAddressoftheUser',countrySTRINGCOMMENT'countryoforigination')COMMENT'Thisisthestagingpageviewtable'ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\054'STOREDASTEXTFILELOCATION'/user/hadoop/warehouse/page_view';CREATETABLElogin(useridBIGINT,ipSTRING,timeBIGINT)PARTITIONEDBY(dtSTRING)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILE;常用的创建表:创建外部表:技能培训HIVE-DML1.Hive的几种JOIN方式和适用场景,Map-sidejoin的reduce-sidejoin适用场景;2.复杂查询的单表过滤条件使用位置,Where和on的区别,涉及列裁剪,分区裁剪;3.Distributeby/sortby/clusterby/orderby语法的使用和区别;(DataManipulationLanguage)数据操作语言知识点技能培训HIVE-DML4.Hive函数使用:sysdate()、date_format()、conca