hive的常用函数和建表语句
一、hive的基础建表语句
CREATE [external] TABLE [IF NOT EXISTS] table_name (--[external]建外部表,[IF NOT EXISTS]如果存在就不重新建表 id string, sfsb string )
COMMENT 'emp' --这张表加了注释(emp) row format delimited fields terminated by ',' --列分割方式,默认为(\u001) ascii表上的1 stored as orc; --存储方式,可以省略,默认方式textfile location '/los/t01_loan_tmp'; ---存放地址
二、hive基本知识
#内部表:
create table fzname ( id int, name string, age int, tel string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','--分隔符--可以省略不写,默认是'\t',制表符tab -----通过插入的方式更新数据,可以不写。 ---通过 load data local 方式 导入数据到表中,那么一定要 保证 分隔符和 文件中分隔符保持一只。 STORED AS TEXTFILE;--以什么格式保存--可以省略不写,不写就以文本方式存储
----备注---------------
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’
* ROW FORMAT
* TERMINATED BY ‘\t’ 每行数据中字段的分隔符
* LINES TERMINATED BY ‘\n’ 行的分隔符,不指定的时候默认为‘\n’
创建好的内部表会在hadoop上面的 /user/hive/warehouse 下某个数据库下生成一个文件夹
hive工具在hadoop上面的专属路径(hive仓库路径) :/user/hive/warehouse
创建的数据库、表都会在这个路径下,放的数据也会在这个路径下
#外部表:
create external table fz_external_name (id int, name string, age int, tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE location '/mytable/fz_external_name';
EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),
Hive 创建内部表时,会将数据移动到数据仓库指向的路径;/user/hive/warehouse
若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
在删除表的时候,内部表的元数据(表名称、表结构)和数据(那个文件夹)会被一起删除,
而外部表只删除元数据,不删除数据。
三、hive的存储方式
1、textfile
默认格式;
存储⽅式:⾏存储;
磁盘开销⼤ 数据解析开销⼤;
使⽤这种⽅式,hive不会对数据进⾏切分,从⽽⽆法对数据进⾏并⾏操作。
2、sequencefile
⼆进制⽂件,以<key,value>的形式序列化到⽂件中;
存储⽅式:⾏存储;
可分割 压缩;
⼀般选择block压缩;
优势是⽂件和Hadoop api中的mapfile是相互兼容的
3、refile
存储⽅式:数据按⾏分块,每块按照列存储;
压缩快 快速列存取;
读记录尽量涉及到的block最少;
读取需要的列只需要读取每个row group 的头部定义;
读取全量数据的操作 性能可能⽐sequencefile没有明显的优势,
4、orc
存储⽅式:数据按⾏分块,每块按照列存储;
压缩快 快速列存取;
效率⽐rcfile⾼,是rcfile的改良版本。
5、parquet
类似于orc,相对于orc⽂件格式,hadoop⽣态系统中⼤部分⼯程都⽀持parquet⽂件
更多了解:https://zhuanlan.zhihu.com/p/102502175 --HIVE 常用函数总结