Hive基础演示文档.ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Hive基础Page112Hive结构Hive基础操作目录3Hive的MAP/RED34山东现场实际应用Page2Hive结构图数据存储Hive数据以文件形式存储在HDFS的指定目录下Hive语句生成查询计划,由MapReduce调用执行用户接口解析器:生成抽象语法树语法分析器:验证查询语句逻辑计划生成器(包括优化器):生成操作符树查询计划生成器:转换为map-reduce任务CLI:启动的时候,会同时启动一个Hive副本Client:Hive的客户端,用户连接至HiveServerWUI:通过浏览器访问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只有在处理大数据时才有优势数据库在处理小数据时执行延迟较低HiveVSRDBMSHive的内容是读多写少的因此,不支持对数据的改写和删除,数据都是在加载的时候中确定好的数据库中的数据通常是需要经常进行修改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.Page7DDLDMLCreate/DropDatabaseCreate/DropTableAlterTable/PartitionCreate/DropViewCreate/DropFunctionCreate/DropIndexShow/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:单机排序,多个reduceDISTRIBUTEBY:按照指定的字段对数据进行划分到不同的输出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执行日志查看其对应的日志在后台的位置

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功