Store as的含义
hive文件存储格式包括以下几类
1.TEXTFILE
为默认格式,建表时不指定则默认为这个格式,导入数据时会直接吧数据文件拷贝到hdfs上不进行处理;
SEQUENCEFILE,RCFILE,ORCFILE,PARQUET格式的表不能直接从本地文件导入数据数据要先导入到TEXTFILE格式的表中,再从表中用insert导入SEQUENCEFILE,RCFILE,ORCFILE,PARQUET表中;
或者用复制表结构及数据的方式(create table as select * from table)
特点:
(1)默认格式;
(2)存储方式为行存储;
(3)磁盘开销大,数据解析开销大;
(4)但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作
2.SEQUENCEFILE
二进制文件以<key,value>的形式序列化到文件中;
存储方式:行存储;
可分割压缩;
-般选择block压缩;
优势是文件和Hadoop api中的mapfile是相互兼容的
3.RCFILE
存储方式:数据按行分块每块按照列存储;
压缩快快速列存取;
读记录尽量涉及到的block最少;
读取需要的列只需要读取每个row group的头部定义;
读取全量数据的操作性能可能比sequencefile没有明显的优势,
4.ORCFILE
存储方式:数据按行分块每块按照列存储;
压缩快快速列存取;
效率比rcfile高是rcfile的改良版本。
5.PARQUET
类似于ORC,相对于ORC文件格式,HADOOP生态系统中大部分工程都支持PARQUET文件
hive哪些操作会有mapreduce
select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤。这样做的好处就是不新开mr任务,执行效率要提高不少,但是不好的地方就是用户界面不友好,有时候数据量大还是要等很长时间,但是又没有任何返回。
1.hive -H 查看hive命令
1.hive -e SQL语句
hive -e “select * from tname”
2.hive -f SQL文件
hive -f test0330.sql
test0330.sql文件
create table … temp01 select * from emp;
create table … temp02 select * from dept;
insert into dws_result
select * from temp01 left join temp02…;
3.hive -i
定义UDF函数
2.库相关的语法
1.create
CREATE [REMOTE] (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[MANAGEDLOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value,...)];
CREATE DATABASE test;
不加LOCATION的,对应的HDFS的地址是:/user/hive/warehouse/test.db
2.drop
drop database test;
如果库中有表存在,不允许删除。
如果需要删除(1.把所有的表删了)