Hive基础之表操作

使用过Oracle数据库的童鞋都知道Oracle里面有两张经典的表员工(emp)和部门(dept),本文就以这两张表为基础,介绍一些Hive中表的一些基表操作。

1.创建表

根据emp和dept的字段类型,将其转换为Hive中的对应的数据类型,我们可以得到这两张表的建表语句:

--员工表

create table IF NOT EXISTS default.emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

--部门表

create table IF NOT EXISTS default.dept(
deptno int,
dname string,
loc string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

在hive控制台界面执行上面的建表命令,然后检查两张表是否创建成功:

hive (default)> show tables;
OK
tab_name
dept
emp
Time taken: 0.079 seconds, Fetched: 2 row(s)

可以看到dept和emp两张表都已经创建成功了。

2.加载数据

将Oracle中这两张表的数据导出成文本格式emp.txt和dept.txt,导出时以制表符(\t)对字段进行分割,然后将这两个文件上传到hive客户端的服务器上,接下来就可以对数据进行加载了。

hive (default)> load data local inpath '/opt/datas/emp.txt' overwrite into table emp ;
Loading data to table default.emp
Table default.emp stats: [numFiles=1, totalSize=659]
OK
Time taken: 0.843 seconds
hive (default)> load data local inpath '/opt/datas/dept.txt' overwrite into table dept ;
Loading data to table default.dept
Table default.dept stats: [numFiles=1, totalSize=82]
OK
Time taken: 0.417 seconds

然后查看加载的数据是否正确:

hive (default)> select * from emp;
OK
empno   ename   job     mgr     hiredate        sal     comm    deptno
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
7499    ALLEN   SALESMAN        7698    1981-2-20       1600.0  300.0   30
7521    WARD    SALESMAN        7698    1981-2-22       1250.0  500.0   30
7566    JONES   MANAGER 7839    1981-4-2        2975.0  NULL    20
7654    MARTIN  SALESMAN        7698    1981-9-28       1250.0  1400.0  30
7698    BLAKE   MANAGER 7839    1981-5-1        2850.0  NULL    30
7782    CLARK   MANAGER 7839    1981-6-9        2450.0  NULL    10
7788    SCOTT   ANALYST 7566    1987-4-19       3000.0  NULL    20
7839    KING    PRESIDENT       NULL    1981-11-17      5000.0  NULL    10
7844    TURNER  SALESMAN        7698    1981-9-8        1500.0  0.0     30
7876    ADAMS   CLERK   7788    1987-5-23       1100.0  NULL    20
7900    JAMES   CLERK   7698    1981-12-3       950.0   NULL    30
7902    FORD    ANALYST 7566    1981-12-3       3000.0  NULL    20
7934    MILLER  CLERK   7782    1982-1-23       1300.0  NULL    10
Time taken: 0.272 seconds, Fetched: 14 row(s)
hive (default)> select * from dept;
OK
deptno  dname   loc
10      ACCOUNTING      NEW YORK
20      RESEARCH        DALLAS
30      SALES   CHICAGO
40      OPERATIONS      BOSTON
Time taken: 0.14 seconds, Fetched: 4 row(s)

可以到数据已经正确加载进来了。

3.创建子表

创建子表的语句如下:

create table if not exists default.dept_cats
as
select deptno, dname from dept ;

在hive中执行的结果如下:

hive (default)> create table if not exists default.dept_cats
              > as
              > select deptno, dname from dept ;
Query ID = hive_20190213212727_c554cafb-6c5d-4e0c-8ad6-a19f902f3222
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1550060164760_0002, Tracking URL = http://node1:8088/proxy/application_1550060164760_0002/
Kill Command = /opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/lib/hadoop/bin/hadoop job  -kill job_1550060164760_0002
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2019-02-13 21:28:39,419 Stage-1 map = 0%,  reduce = 0%
2019-02-13 21:29:14,401 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.64 sec
MapReduce Total cumulative CPU time: 1 seconds 640 msec
Ended Job = job_1550060164760_0002
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to: hdfs://node1:8020/user/hive/warehouse/.hive-staging_hive_2019-02-13_21-27-40_322_2052979003044233314-1/-ext-10001
Moving data to: hdfs://node1:8020/user/hive/warehouse/dept_cats
Table default.dept_cats stats: [numFiles=1, numRows=4, totalSize=49, rawDataSize=45]
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1   Cumulative CPU: 1.64 sec   HDFS Read: 3352 HDFS Write: 122 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 640 msec
OK
deptno  dname
Time taken: 96.555 seconds

可以看出,在创建子表的时候会在Yarn平台上运行MapReduce,运行完之后我们查看一下结果:

hive (default)> show tables;
OK
tab_name
dept
dept_cats
emp
Time taken: 0.017 seconds, Fetched: 3 row(s)
hive (default)> select * from dept_cats;
OK
deptno  dname
10      ACCOUNTING
20      RESEARCH
30      SALES
40      OPERATIONS
Time taken: 0.121 seconds, Fetched: 4 row(s)

新增的表dept_cats有4条记录,说明我们已经成果的创建了子表。

4.清除表数据

清除一张表中的数据使用truncate命令,我们把表dept_cats中的数据进行清除:

hive (default)> truncate table dept_cats;
OK
Time taken: 0.29 seconds
hive (default)> select * from dept_cats;
OK
deptno  dname
Time taken: 0.121 seconds

可以看出刚才创建的子表的数据已经被清除了。

5.修改表名称

首先我们用like的方式创建一张表:

hive (default)> create table if not exists default.dept_like
              > like
              > default.dept ;
OK
Time taken: 0.188 seconds
hive (default)> show tables;
OK
tab_name
dept
dept_cats
dept_like
emp
Time taken: 0.065 seconds, Fetched: 4 row(s)

然后对新建的表dept_like修改名称:

hive (default)> alter table dept_like rename to dept_like_rn ;
OK
Time taken: 0.501 seconds
hive (default)> show tables;
OK
tab_name
dept
dept_cats
dept_like_rn
emp
Time taken: 0.052 seconds, Fetched: 4 row(s)

可以看到表dept_like已经被修改为dept_like_rn。注意,在hive中一般不去修改字段的名称或者增加字段,hive主要是用来进行数据分析的,所以如果要修改字段名称可以使用创建子表的方式来进行。

6.删除表

删除一张表用drop命令,我们删除刚才新建的表:

hive (default)> drop table if exists dept_like_rn ;
OK
Time taken: 0.542 seconds
hive (default)> show tables;
OK
tab_name
dept
dept_cats
emp
Time taken: 0.049 seconds, Fetched: 3 row(s)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,362评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,577评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,486评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,852评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,600评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,944评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,944评论 3 447
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,108评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,652评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,385评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,616评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,111评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,798评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,205评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,537评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,334评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,570评论 2 379

推荐阅读更多精彩内容