1、udf,udaf,udtf的区别?
Hive中有三种UDF: 1、用户定义函数(user-defined function)UDF; 2、用户定义聚集函数(user-defined aggregate function,UDAF); 3、用户定义表生成函数(user-defined table-generating function,UDTF)。 UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。 UDAF 接受多个输入数据行,并产生一个输出数据行。像COUNT和MAX这样的函数就是聚集函数。 UDTF 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。 简单来说: UDF:返回对应值,一对一 | UDAF:返回聚类值,多对一 | UDTF:返回拆分值,一对多 |
2、请写出你在工作中自定义过的udf函数,简述定义步骤
步骤: 1.extends UDF,实现evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCase'; 4.使用 5.drop temporary function tolowercase; |
3、Hive 内部表和外部表的区别?
创建外部表多了external关键字说明以及location path. Hive中表与外部表的区别: 1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样; 2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的! |
4、Hive 分区表与分桶表区别
分区在HDFS上的表现形式是一个目录, 分桶是一个单独的文件 分区: 细化数据管理,直接读对应目录,缩小mapreduce程序要扫描的数据量 分桶: |