




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
hive文件操作及UDF压缩编/解码器选择使用压缩可以最小化所需要的磁盘存储空间,以及减小磁盘和网络I/O操作,不过,文件压缩和解压过程会增加CPU开销。BZip2压缩率最高,消耗最多CPU开销;GZip是压缩率和压缩/解压速度上的下一个选择。LZO和Snappy压缩率比BZip2和GZip小,但是压缩/解压速度要快,特别是解压缩过程;相对于磁盘空间和I/O开销,频繁读取数据所需要的解压缩速度更重要的话,则选择它们。压缩编/解码器选择压缩格式的文件是否可分割,MapReduce需要将非常大的输入文件分割成多个块,每个块划分到一个单独的map进程处理。Hadoop需要知道文件中记录的边界才可以进行分割。Gzip和Snappy没有边界信息BZip2和LZO提供了块级别的压缩,每个块中都包含完整的记录信息。开启中间压缩对中间数据进行压缩可以减少job中map和reducetask间的数据传输量,选择一个低CPU开销的编/解码器要比选择一个压缩率高的编/解码器更重要。开启中间压缩,需要将ermediate参数设置为true。Hadoop压缩默认的编/解码器是DefaultCodec,可以通过pression.codec属性来修改。使用Gzip进行压缩press.GzipCodec最终输出结果压缩当hive将输出写入到表中时,输出内容页可以进行压缩。可以通过press.output属性来控制。当开启最终输出结果压缩功能时,需要为其指定一个编解码器,可以通过pression.codec属性来修改,对于输出文件,使用Gzip进行压缩,因为它可以大幅度降低文件的大小。文件格式Hive中常用的有三种文件格式TextFile、SequenceFile以及RCFileTextFile:默认的文件格式,文本文件格式便于和其他工具共享数据,便于查看和编辑,但文本文件存储占用空间较大。SequenceFile:是Hadoop提供的一种二进制文件格式,是Hadoop支持的标准文件格式,可以节约存储空间,也可以提高I/O性能。
RCfile:hive支持的另一种高效的二进制文件格式,RCfile是一种行列存储相结合的存储方式,先将数据按行分块再按列式存储,保证同一条记录在一个块上,避免读取多个块,有利于数据压缩和快速进行列存储。Sequencefile存储格式HDFS和MR主要针对大数据文件来设计,在小文件处理上效率低。针对小文件可以选择Sequencefile存储格式,将这些小文件包装起来,将整个文件作为一条记录,可以获取更高效率的储存和处理,避免多次打开关闭流耗费计算资源。Sequencefile存储格式也可以将一个文件划分成多个块,采用一种可分割的方式对块进行压缩。在hive中使用Sequencefile存储格式createtablesequence_file_table(idint,namestring)ROWFORMATDELIMITEDFIELDSTERMINATEDBY','storedassequencefile;Sequencefile存储格式SequenceFile采用了3种压缩方式:NoneRecord(默认)Block(压缩性能最好)可以在hadoop的mapred-site.xml文件中,或者在hive的hive-site.xml中定义压缩方式。pression.typeRCfile存储格式RCFile(RecordColumnarFile)存储结构遵循的是“先水平划分,再垂直划分”的设计理念,它结合了行存储和列存储的优点。首先,RCFile保证同一行的数据位于同一节点,因此元组重构的开销很低其次,像列存储一样,RCFile能够利用列维度的数据压缩,并且能跳过不必要的列读取。RCfile存储格式创建RCFile存储格式的表CREATETABLErcfiletable(keystring,valuestring)ROWFORMATSERDE'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'STOREDASRCFile;插入数据insertintotablercfiletableselect*fromtest;HiveSerDeSerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化。对象的序列化主要有两种用途:对象的持久化对象数据的网络传送除了上面两点,Hive的反序列化是对key/value反序列化成hivetable的每个列的值。Hive可以方便的将数据加载到表中而不需要对数据进行转换,这样在处理海量数据时可以节省大量的时间。可以使用java来实现SerDe,hive本身自带了几个内置的serDeHiveSerDeSerDe表示Serializer和Deserializer用户自定义函数(UDF)在ETL处理中,一个处理过程可能包含多个处理步骤。Hive语言具有多种方式来将上一步骤的输出通过管道传递给下一个步骤,然后在一个查询中产生众多输出。用户可以针对一些特定的处理过程编写自定义函数。如果没有这个功能,那么一个处理过程可能就需要包含一个MapReduce步骤或者需要将数据转移到另一个系统中来实现这些改变。Hive提供了用户自定义函数(UDF),UDF是一个允许用户扩展HiveQL的强大功能,用户使用java进行编码,将用户自定义函数加入到用户会话中,它们就可以和内置的函数一样使用。UDF是在Hive查询产生的相同的task进程中执行的,因此它们可以高效地执行。用户自定义函数(UDF)Hive可以允许用户编写自己定义的函数UDF,在查询中使用。Hive中有3种UDF:UDF(用户自定义函数):操作单个数据行,产生单个数据行;UDAF(用户自定义聚合函数):操作多个数据行,产生一个数据行。UDTF(用户自定义表生成函数):操作一个数据行,产生多个数据行。用户自定义函数(UDF)查看当前Hive会话中所加载的所有函数名称showfunctions查看函数说明descfunctionconcatdescfunctionextendedconcat函数调用selectsum(amount)fromsalary;用户自定义表生成函数(UDTF)表生成函数接受一行数据输入,然后产生多列或者多行输出,所有表生成函数,包括用户自定义的和内置的,都统称用户自定义表生成函数(UDTF)。将单列扩展成多列或者多行selectexplode(subordinates)subfromemployees;selectexplode(deductions)fromemployees;Hive只允许在select子句中使用单一的表生成函数selectname,explode(subordinates)subfromemployees;用户自定义表生成函数(UDTF)通过lateralview可以方便的将explode这个UDTF得到的行转列的结果集合在一起提供服务。selectname,subfromemployeeslateralviewexplode(subordinates)subviewassub;使用lateralview需要指定视图别名和生成的新列的别名UDF编程编写一个UDF,需要继承UDF并实现evaluate()函数。在查询过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化。对于每行输入都会调用evaluate()函数。而evaluate()处理后的值会返回给Hive。同时用户是可以重载evaluate方法的。Hive会像Java的方法重载一样,自动选择匹配的方法。UDF编程@Description(name="TestUDF",value="_FUNC_(date,price)-fromtheinputdatestring(yyyyMMdd),"+"returnsthedeprecationpricebycomputingpriceand"+"thedepreciationrateofthesecond-handcar.",extended="Example:\n"+">SELECT_FUNC_(date_string,price)FROMsrc;")publicclassTestUDFextendsUDF{privateSimpleDateFormatdf;privatedouble[]rates;publicTestUDF(){df=newSimpleDateFormat("yyyyMMdd");rates=newdouble[]{0.071,0.070,0.069,0.067,0.064,
0.062,0.060,0.057,0.055,0.053,
0.051,0.049,0.049,0.048,0.046,
0.044};
}UDF编程publicStringevaluate(Stringdeal_date,Stringprice){Datedate=null;Datenow=newDate();//获取当前时间longprice_=Long.valueOf(price);try{ date=df.parse(deal_date);doublenumMonth=(now.getYear()*12+now.getMonth())-(date.getYear()*12+date.getMonth())+1;doublemileage=((6.000-(1.7000*numMonth/12))/1.7000)*12*0.25;doubletotal=numMonth+mileage;
int
depre_year=(int)(total/12);for(int
i=0;i<depre_year+1;i++){price_=(long)(price_*(1-rates[i]));}}catch(Exceptionex){returnnull;}returnLong.toString(price_);}UDF编程如果想在Hive中使用UDF,那么需要将Java代码进行编译,然后将编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植物组织培养技术在植物生物材料加工中的应用前景报告
- 统计初级考试试题及答案
- 智能网联汽车的市场前景试题及答案
- 社交媒体对家具设计的影响研究试题及答案
- 智能物流在农村电商中的应用试题及答案
- 班组长履职报告
- 泰安英语考编试题及答案
- 水利工程与土木的关系试题及答案
- 文化产业发展专项资金2025年申请与政策环境分析报告
- 矿洞游戏测试题及答案
- 买床合同范本
- 社区获得性肺炎(1)护理病历临床病案
- GB/T 35428-2024医院负压隔离病房环境控制要求
- 新《建筑节能》考试复习题库(浓缩500题)
- 安徽省合肥市科大附中2025年第二次中考模拟初三数学试题试卷含解析
- 2024年7月中央电大本科《法律文书》期末考试试题及答案
- 因式分解(分组分解法)练习100题及答案
- GB/T 15597.2-2024塑料聚甲基丙烯酸甲酯(PMMA)模塑和挤出材料第2部分:试样制备和性能测定
- JT-T-1180.1-2018交通运输企业安全生产标准化建设基本规范第1部分:总体要求
- 国能辽宁北票200MW 风力发电项目可行性研究
- 泛血管疾病抗栓治疗中国专家共识(2024版)
评论
0/150
提交评论