大数据基本操作锦集之Hive的基本操作(一)

哈喽,大家好,我是汉斯老师。近几年来,互联网行业由于较高的薪资收入,受到许多人的追捧。很多年轻的学子,或是其他行业的有志青年,都想要投身到这个行业中来。然而一方面受到“互联网寒冬”的影响,最近频频传出各家知名互联网公司裁员缩编的消息;另一方面,大量的人才涌入,又使得互联网产业在职场上呈现出供过于求的特征,并最终导致了职场上的激烈竞争。那么互联网行业未来的潜力在哪里?我们又应该在哪个方向上发力,才能保证自己可以获得一份高薪而稳定的工作?基于多年的互联网行业从业经验,汉斯老师在这里向大家推荐大数据方向,希望通过本人的《三分钟入门大数据》和《十分钟精通大数据》等系列文章,帮助所有有志了解学习大数据的朋友掌握大数据的相关知识,也欢迎所有对互联网行业以及大数据领域感兴趣的朋友前来交流。





目录

简介

hive的数据类型

hive的数据存储

hive的数据模型

hive的DDL(数据库定义语言)

hive的DML操作

hive加载数据

hive导出数据

hive udf使用介绍

简介

hive在hadoop生态圈属于数据仓库角色,他能够管理hadoop中的数据,同时可以查询hadoop中的数据。本质上来讲,hive就是sql解释器,可以将sql转换为mapreduce的job来运行。可以将sql中的表,字段转化为hdfs中的文件,以及文件中的列。hive在hdfs中的默认位置是/user/hive/warehouse。

Hive的数据类型

整型:TINYINT,SMALLINT,INT,BIGINT。

文本类型:VARCHAR:1 to 65355,CHAR:255,STRING

时间类型:timestamp:时间戳, date:日期

布尔及二进制:BOOLEAN表示二元的true或false,BINARY用于存储变长的二进制数据

浮点类型:float,double

复杂数据类型:Array/Map/Struct/UNIONhive的数据存储

Hive的数据存储

1.基于Hadoop HDFS

2.Hive没有专门的数据存储格式,存储结构主要包括:数据库、文件、表、视图

3.Hive默认可以直接加载文本文件(TextFile),还支持sequence file 创建表时,指定

4.Hive数据的列分隔符与行分隔符,Hive即可解析数据

hive的数据模型

1.内部表:与数据库中的 Table 在概念上是类似每一个Table在Hive中都有一个相应的目录存储数据。例如,一个表test,它在HDFS中的路径为:/user/hive/warehouse,删除表时,元数据与数据都会被删除.

2.分区表:在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition的数据都存储在对应的目录中。test表中包含 date 和 city 两个 Partition,则对应于date=20130201, city = bj 的HDFS子目录为:/user/hive/warehouse/test/date=20130201/city=bj

3.外部表:指向已经在 HDFS 中存在的数据,可以创建 Partition 它和 内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异 内部表 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中。外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除链接。

hive的DDL(数据库定义语言)

1.创建数据库

hive> show databases;

OK default Time taken: 0.049 seconds, Fetched: 1 row(s)

hive> create database test;

OKTime taken: 0.201 seconds

hive> show databases;

OK default test Time taken: 0.021 seconds, Fetched: 2 row(s)

hive> use test;

OK Time taken: 0.02 seconds

hive> show tables;

OK Time taken: 0.014 seconds

或者:

hive> create database hive_test location '/hive/hive_test';

OK Time taken: 0.017 seconds

2.创建表

hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,

    > salary String, destination String)

    > COMMENT 'Employee details'> ROW FORMAT DELIMITED

    > FIELDS TERMINATED BY '\t'> LINES TERMINATED BY '\n'

    > STORED AS TEXTFILE;

OK Time taken: 0.052 seconds

3.修改表:alter语句

ALTER TABLE name RENAME TO new_name

ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

ALTER TABLE name DROP [COLUMN] column_name

ALTER TABLE name CHANGE column_name new_name new_type

ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

3.1.更改表名rename to,把 employee 修改为 emp。

hive> ALTER TABLE employee RENAME TO emp;

OK Time taken: 0.107 seconds

hive> show tables;

OK emp Time taken: 0.012 seconds, Fetched: 1 row(s)

3.2.更改列名和列数据类型

- 先查看一下这表数据结构:

hive> desc emp;

OK eid int name string salary string destination string Time taken: 0.07 seconds, Fetched: 4 row(s)

- 把name变成ename,把salary数据类型变为double。

hive> ALTER TABLE emp CHANGE name ename String;

OK Time taken: 0.118 seconds

hive> ALTER TABLE emp CHANGE salary salary Double;

OK Time taken: 0.077 seconds

hive> desc emp;

OK eid int ename string salary double destination string Time taken: 0.055 seconds, Fetched: 4 row(s)

- 增加一列:

dept hive> ALTER TABLE emp ADD COLUMNS (dept STRING COMMENT 'Department name');

OK Time taken: 0.071 seconds

hive> desc emp;

OK eid int ename string salary double destination string dept string Department name Time taken: 0.073 seconds, Fetched: 5 row(s) 此时再查看表结构,已加入新字段dept。

4.删除表

hive> show tables;

OK empemployee Time taken: 0.011 seconds, Fetched: 2 row(s)

hive> DROP TABLE IF EXISTS employee;

OK Time taken: 0.295 seconds

hive> show tables;

OK emp Time taken: 0.011 seconds, Fetched: 1 row(s)

5.清空表:先查看在清空。

hive> select * from employee;

OK

1201 Gopal 45000.0 Technical manager

1202 Manisha 45000.0 Proof reader

1203 Masthanvali 40000.0 Technicali writer

1204 Kiran 40000.0 Hr Admin

1205 Kranthi 30000.0 Op Admin

Time taken: 0.031 seconds, Fetched: 5 row(s)

hive> truncate table employee;

OK Time taken: 0.064 seconds

hive> select * from employee;

OK Time taken: 0.054 seconds

受限于篇幅原因,剩下的部分请看这里https://www.jianshu.com/p/8854c552c0cf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355