您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > Hive基础演示文档.ppt
Hive基础Page112Hive结构Hive基础操作目录3Hive的MAP/RED34山东现场实际应用Page2Hive结构图数据存储Hive数据以文件形式存储在HDFS的指定目录下Hive语句生成查询计划,由MapReduce调用执行用户接口解析器:生成抽象语法树语法分析器:验证查询语句逻辑计划生成器(包括优化器):生成操作符树查询计划生成器:转换为map-reduce任务CLI:启动的时候,会同时启动一个Hive副本Client:Hive的客户端,用户连接至HiveServerWUI:通过浏览器访问Hive语句转换Page3Hive元数据表名说明关联键BUCKETING_COLSHive表CLUSTEREDBY字段信息(字段名,字段序号)SD_ID,INTEGER_IDXCOLUMNS_V2Hive表字段信息(字段注释,字段名,字段类型,字段序号)CD_IDDBS元数据库信息,保存HDFS中存放hive表的路径DB_IDPARTITION_KEYSHive分区表分区键TBL_IDSDS所有hive表、表分区所对应的hdfs数据目录和数据格式。SD_ID,CD_IDSD_PARAMS序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等SD_IDSEQUENCE_TABLE保存了hive对象的下一个可用IDSERDES指定ROWFORMATSERDE的类型,即序列化时的一些参数SERDE_PARAMS序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等SERDE_IDTABLE_PARAMS表级属性,如是否外部表,表注释等TBL_IDTBLS所有hive表的基本信息TBL_ID,SD_ID元数据存储在关系数据库如mysql,derby,oracle中解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。Page4Hive和普通关系数据库的异同数据存储数据格式数据更新执行延迟Hive是建立在Hadoop之上的,所有Hive的数据都是存储在HDFS中的。数据库则可以将数据保存在块设备或者本地文件系统中Hive中没有定义专门的数据格式,由用户指定,需要指定三个属性:列分隔符,行分隔符,以及读取文件数据的方法数据库中,存储引擎定义了自己的数据格式。所有数据都会按照一定的组织存储Hive在查询数据的时候,需要扫描整个表(或分区),因此延迟较高,因此hive只有在处理大数据时才有优势数据库在处理小数据时执行延迟较低HiveVSRDBMSHive的内容是读多写少的因此,不支持对数据的改写和删除,数据都是在加载的时候中确定好的数据库中的数据通常是需要经常进行修改Page512Hive结构Hive基础操作目录3Hive的MAP/RED34山东现场实际应用Page6Hive客户端CLILoad,Insertusage:hive-d,--definekey=value-equoted-query-string-ffilename-hhostname--hiveconfproperty=value--hivevarkey=value-ifilename-S,--silent-v,--verboseCommandDescriptionquitexitUsequitorexittoleavetheinteractiveshell.resetResetstheconfigurationtothedefaultvalues(asofHive0.10:seeHIVE-3202).setkey=valueSetsthevalueofaparticularconfigurationvariable(key).Note:Ifyoumisspellthevariablename,theCLIwillnotshowanerror.setPrintsalistofconfigurationvariablesthatareoverriddenbytheuserorHive.set-vPrintsallHadoopandHiveconfigurationvariables.addFILE[S]filepathfilepath*addJAR[S]filepathfilepath*Addsoneormorefiles,jarstothelistofresourcesinthedistributedcache.listFILE[S]listJAR[S]Liststheresourcesalreadyaddedtothedistributedcache.listFILE[S]filepath*listJAR[S]filepath*Checkswhetherthegivenresourcesarealreadyaddedtothedistributedcacheornot.deleteFILE[S]filepath*deleteJAR[S]filepath*Removestheresource(s)fromthedistributedcache.!commandExecutesashellcommandfromtheHiveshell.dfsdfscommandExecutesadfscommandfromtheHiveshell.querystringExecutesaHivequeryandprintsresultstostandardoutput.sourceFILEfilepathExecutesascriptfileinsidetheCLI.Page7DDLDMLCreate/DropDatabaseCreate/DropTableAlterTable/PartitionCreate/DropViewCreate/DropFunctionCreate/DropIndexShow/DescribeCREATETABLEa_test_ms(op_timestring,event_namestring)PARTITIONEDBY(pt_time_string)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILELOCATION'hdfs://ocdccluster/asiainfo/SDDW/ODS/a_test_ms';Load语法:LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]Load操作只是单纯的复制/移动操作,将数据文件移动到Hive表对应的位置。Filepath可以是本地路径,也可以是HDFS的路径加载的目标可以是一个表或者分区(静态分区)。如果表包含分区,必须指定每一个分区的分区名在load时hive会检查加载的数据文件与建表时指定的file_type是否匹配Insert语法:INSERTINTO/OVERWRITETABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)]select_statement1FROMfrom_statement;INSERTOVERWRITE[LOCAL]DIRECTORYdirectory1SELECT...FROM...Inser语句可以把select语句查询出来的记录插入到目标表中,也可以把查出的记录以文件的形式导出到本地Page8SelectJoins语法:SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]][LIMITnumber]group:进行聚合orderby:全局排序,一个reducesortby:单机排序,多个reduceDISTRIBUTEBY:按照指定的字段对数据进行划分到不同的输出reduce/文件中。与sortby配合使用,避免数据的重叠和丢失CLUSTERBY:等于DistributeBy+SortBy,倒序排序语法:table_referenceJOINtable_factor[join_condition]|table_reference{LEFT|RIGHT|FULL}[OUTER]JOINtable_referencejoin_condition|table_referenceLEFTSEMIJOINtable_referencejoin_condition|table_referenceCROSSJOINtable_reference[join_condition](asofHive0.10)Hive只支持等值连接(equalityjoins)、外连接(outerjoins)和(left/rightjoins)。Hive支持多于2个表的连接。LEFTSEMIJOIN是IN/EXISTS子查询的一种更高效的实现Page912Hive结构Hive基础操作目录3Hive的MAP/RED34山东现场实际应用Page10JOINMap:以ON条件中的列作为Key,如果有多个列,则Key是这些列的组合以JOIN之后所关心的列作为Value,当有多个列时,Value是这些列的组合。按照Key进行排序。Shuffle:根据Key的值进行Hash,并将Key/Value对按照Hash值推至不同对的Reduce中。Reduce:Reducer根据Key值进行Join操作语句:SELECTa.pageid,b.ageFROMpage_viewaJOINuserbON(a.userid=b.userid);Page11GROUPBY语句:SELECTpageid,age,count(1)FROMpv_usersGROUPBYpageid,age;Page12数据量大不是问题,数据倾斜是个问题。jobs数比较多的作业运行效率相对比较低。count(distinct)效率较低计算框架优化手段Join优化不要求全局有序时使用DistributeBy+SortBy来排序如果全局有序是为了得到排名靠前的结果,刚使用limit子句来减少数据量。解决数据倾斜问题。减少job数。设置合理的mapreduce的task数对小文件进行合并使用MAPJOIN()会将较小的表加载到内存中,使连结过程在Map阶段完成Hive优化排序优化Page1312Hive结构Hive基础操作目录3Hive的MAP/RED34山东现场实际应用Page14Page15节点HQLOCDC平台HQL执行步骤后台调度10.17.254.12hiveServer服务10.17.254.12Map/reduce从OCDC平台的执行监控中,可以找到HQL对应的jobid,通过jobid可以在jobtracker的监控页面()找到对应的jobPage16Job执行信息查看在jobtracker的监控页面()点击job,即可进入此job对应的执行页面监控,如下:Page17Job执行日志查看其对应的日志在后台的位置
本文标题:Hive基础演示文档.ppt
链接地址:https://www.777doc.com/doc-7133011 .html