Hive的表操作

2017-07-10  本文已影响0人  编程回忆录

1.创建表:

create table if not exists mydb.exployees(
  name                  string comment 'Employee name',
  salary                float comment 'Employee salary',
  subordinates          array<string> comment 'Names of subordinates',
  deductions            map<string,float> comment 'Keys are deductions names,values are percentages',
  address               struct<street:string,city:string,state:string,zip:int> comment 'Home address'
);

mydb是表所属的数据库名称

2.列举指定数据库下的表:

hive > use default;
hive > show tables;

3.使用正则表达式过滤数据库的表名:

hive > use mydb;
hive > show tables 'empl.*';

4.查看表结构的详细信息:

hive > describe extended mydb.exployees;

5.表的分类:
Hive表分为管理表和外部表。

create external table if not exists stocks (
    exchange string,
    symbol string,
    ymd string,
    price_open float,
    price_high float,
    price_low float,
    price_close float,
    volume int,
    price_adj_close float
  )
row format delimited fields terminated by ','
location '/data/blocks/';

关键字external告诉Hive这个表是外部的,而后面的location关键字则用于告诉Hive数据位于哪个路径下。
因为表是外部的,所以Hive并非认为其完全拥有这份数据。因此,删除该表并不会删除掉这份数据,不过描述表的元数据会被删除掉。

6.如何查看表是管理表还是外部表:
可以使用describe extended tablename语句的输出中查看到表是否是管理表或外部表。在末尾的详细表信息输出中,对于管理表,用户可以看到如下信息:
... tableType:MANAGED_TABLE)
对于外部表,用户可以看到如下信息;
... tableType:EXTERNAL_TABLE)
对于外部表,用户还可以对一张存在的表进行表结构复制(而不会复制数据):
create external table if not exists mydb.employees2
like mydb.employees
location '/path/to/data';

上一篇 下一篇

猜你喜欢

热点阅读