Hive表操作一

  • 2019 年 12 月 30 日
  • 筆記

Hive表操作一 *文本文件 -CSV:以逗号分隔的文本文件 -TSV:以制表符分隔的文本文件 这两种文件格式Hive都支持,但是有个缺点就是用户要对文本文件中那些不需要作为分隔符处理的逗号或者制表符格外小心 *创建表 CREATE TABLE语句遵循SQL语法惯例,但比较灵活,可定义表的数据文件存储在什么位置,使用什么存储格式等 eg:CREATE TABLE IF NOT EXISTS tmp.table1( userId string COMMENT '用户ID', name string COMMENT '用户姓名', createtime string COMMENT '创建时间' ) COMMENT '用户表' TBLPROPERTIES ('creator'='yy', 'created_at'='2018-07-23 20:00:00', …) LOCATION '/user/hive/warehouse/tmp/table1'; 对以上语句分析: 1.如果用户当前数据库不是要建表的目标数据库,可以在表明前增加库名来进行指定tmp.table1 2.增加 IF NOT EXISTS,若表存在,Hive会忽略后面的建表语句,而且不会有提示,所以第一次建表 IF NOT EXISTS 会有用 3.但需要注意是的,如果已存在的表和这个表模式不一样,Hive不会做出提示,如果要用新表模式需删除原表,然后重新建表。或者修改原表。 4.一般情况下,TBLPROPERTIES的主要作用是按键值对格式为表增加额外的说明文档 SHOW TBLPROPERTIES table_name命令,用于列出表的TBLPROPERTIES属性信息 5.Hive建表时会自动增加两个属性:last_modified_by(保存最后修改这个表的用户的用户名) last_modified_time(保存最后一次修改的时间) 6.LOCATION指定一个存储路径,这个例子我们使用了默认路径,Hive默认将创建的表的目录放置在该表所属数据库后 但defult库是个例外,他在/user/hive/warehouse下没有对应库目录,所以defult库中的表目录直接位于/user/hive/warehouse目录后(明确指定例外) *拷贝表(只拷贝表模式,不拷贝数据) eg: CREATE TABLE IF NOT EXISTS tmp.table2 LIKE tmp.table1; *列举表 –在该库下列举该库下的所有表 eg:hive >USE tmp; hive > SHOW TABLES; table1 table2 table3 –不在该库下列举该库下的所有表 eg:hive >USE default; hive > SHOW TABLES IN tmp; table1 table2 table3 注:上周提到过的使用正则表达式查询和 IN databas_name ,这两个功能不支持同时使用 *删除表 eg:DROP TABLE IF EXISTS table1; 对于内部表,表的元数据信息和表内的数据都会被删除 对于外部表,表的元数据信息会被删除,但是表中的数据不会被删除

END