1.默认存储格式为:纯文本
stored as textfile;
2.二进制存储的格式
顺序文件,avro文件,parquet文件,rcfile文件,orcfile文件。
3.转存parquet格式
hive>create table hive.stocks_parquet stored as parquet as select * from stocks;
说明:原始数据大小为stocks表[40万条],21M,转存parquet格式后,hdfs上数据文件大小为6M,压缩比在3倍左右;
4.转存rcfile
hive> create table hive.stocks_rcfile stored as rcfile as select * from stocks ;
说明:原始数据大小为stocks表[40万条],21M,转存rcfile格式后,hdfs上数据文件大小为16M,压缩比在0.7倍左右;
5.转存orcfile
hive> create table hive.stocks_orcfile stored as orcfile as select * from stocks ;
说明:原始数据大小为stocks表[40万条],21M,转存orcfile格式后,hdfs上数据文件大小为5M,压缩比在4倍左右;
6.测试执行时间
hive>select count(*) from stocks ; 执行时间:exec/fetch time: 0.227/1.580 sec hive>select count(*) from hive.stocks_parquet ; 执行时间:exec/fetch time: 0.144/2.846 sec hive>select count(*) from hive.stocks_rcfile ; 执行时间:exec/fetch time: 0.114/1.238 sec hive>select count(*) from hive.stocks_orcfile ; 执行时间:exec/fetch time: 0.129/2.027 secUDF自定义函数
1.首先创建JAVA类,继承UDF.class 2.重写evaluate()方法; 3.打jar包; 4.加载自定义函数的jar包; hive>add jar /home/hyxy/XXX.jar ; hive>create temporary function {function_name} as 'com.hyxy.hive.udf.xxx'5.自定义函数类型
a.UDF:单行进-->单行出 b.UDAF:多行进-->单行出 c.UDTF:单行进-->多行出