03-表操作1

写在前面的话:

该系列博文是我学习《 Hive源码解析与开发实战》视频课程的一个笔记,或者说总结,暂时没有对视频中的操作去做验证,只是纯粹的学习记录。

有兴趣看该视频的博友可以留言,我会共享出来,相互交流学习 ^.^。

*********************************************************************************************************

1、Hive数据类型:

   

         

2、Hive文件格式:

  文件类型主要包括:文本文件格式、序列化文件格式、列式文件格式。

  

    对于列文件格式,它是针对hdfs中的一个block块的:

    

    它首先把hdfs上的一个块划分成了一个个行组,每一个行组是按照多少行来进行分组的,比如说把100行分为一个行组(row group),然后再对这一个Row Group进行压缩,压缩过程如下:

  首先把每一列的数据转化为行的数据,也就是所有的列都变成行,这样做是为了方便有时候我们需要某一列的数据,但为了高效,我们不需要把其他列的数据也查询出来;

  然后把转化后的行中重复的数据去掉,也就是“压缩”的由来,这样可以节省hdfs的存储空间;    

3、Hive表的创建:

  hive里面所有的数据都是以表的形式来管理的,所以表是hive的一个基础,关于表的创建语法如下:

  

  解释:

  CREATE :创建表的关键字;

  EXTERNAL:是可选的,主要用来区分是内部表还是外部表,内部表和外部表主要是hive表的两大类;

  TABLE: 关键字;

  IF NOT EXISTS:这个是可选的,表示当我创建一个表的时候,如果不存在才创建,已经存在该表了就不创建。

          主要是为了防止在没有该语句的时候,创建一个已有的表时报错;

  db_name.  :表示数据库的名字,后面跟一个点,用来接对应表的名字;

  table_name:表的名字;

  col_name date_type :分别为字段名字和类型;

  COMMENT col_comment:字段的描述信息,COMMENT后面接字段描述信息col_comment;

  PARTITIONED BY: 通过哪些字段进行分区,后面接小括号,然后里面写相应的字段名和字段类型,如果有描述信息的还可以添加相应字段的描述信息;

  CLUSTERED BY:也就是把一些字段作为key,集合到一块,(个人理解:对应到mapreduce中最后reduce拿到相应分区数据后的分组操作,相同的key作为一组,

          这里也就是把这些字段相同值的分为一个组),后面接小括号,里面写一些字段名;

  SORTED BY: 后面接小括号,里面写相应的字段名,以及标示是正序还是倒序排,表示按照那些字段进行排序排序;

  INTO num_buckets BUCKETS: 表示划分为多少个桶,个人理解:这个对应到mapreduce的reduce个数;

  ROW FORMAT:设置行的格式,后面接row_format格式,row_format表示某种格式,个人猜测:表示行里面的字段是以什么进行分割的,如空格或逗号;

  STORED AS :后面接文件格式,表示以什么格式进行存储,这里的文件格式就是前面讲的文本格式、序列化文件格式、列式格式;

  STORED BY:个人猜测,是表示通过自定义的输入输出类,进行处理,然后存储;

  LOCATION hdfs_path:表示把创建的这个表数据存储在hdfs上的位置;

  TABLEPROPERTIES:后面接小括号,里面设置属性名=属性值;这里用来设置表的属性;

  AS select_statement:通过select查询出一些其他表的结果,然后直接把得到的这些数据放入到创建的这张表里面去;

  以上就是hive创建表的基本语法解释。      

  下面列举一个hive创建表的列子:

  

  

4、Hive操作表:

  

5、Hive表分区:

6、Hive查询表:

时间: 2024-08-19 08:35:24

03-表操作1的相关文章

MySQL之二:库、储存引擎、表操作

一.库操作 1.数据库命名规则: 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2.数据库相关操作 #创建数据库 create database 数据库名 charset utf8; #查看数据库 show databases; show create database db1; select database(); #查看当前所在数据库 #选择数据库 use 数据库名 #删除数据库 drop databa

Python/MySQL表操作以及连接

Python/MySQL表操作以及连接 mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. mysql> create table yuan(id int auto_increment,yuangongname int,bumen_id int, primary key(id,yuangongname))engine=innodb default charset=utf8; Query OK, 0 rows affected (0.43 sec) 外键 :可以进行联合外键,操作

第八章|MySQL数据库|库操作|表操作

1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题, 总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写. 数据(Data):描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数

库操作和表操作

一.库操作 1.新建数据库 语法: create database 数据库名 charset utf8; mysql> create database gao1 charset utf8; Query OK, 1 row affected (0.00 sec) 2.查看数据库 查看所有的库:show databases: show databases: mysql> show databases; +--------------------+ | Database | +-----------

Mysql 库表操作初识

Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, 好尴尬呀. -- win + R 输入cmd 进入控制台 C:\Users\chenjie> mysql -u root -p -- 回车 Enter password: ******** -- 回车 -- 成功进入了mysql客户端, 如果登录失败, 要么就是密码不对, 或者是服务没有开启. W

表操作和mysql支持的数据类型

表操作 表的基本操作 前提:先选取要操作的数据库 1)进入指定库 mysql>:use db1; 2)确定当前使用的数据库 mysql>:select database(); 3)查看当前数据库已有表 mysql>:show tables; 4)增加,创建表(字段1 类型, ..., 字段n 类型) mysql>:create table 表名(字段们); eg>: create table student(name char(16), age int); eg>: c

MySql基本的多表操作

多表操作 交叉查询(笛卡尔积查询): #A表中的每一条记录都对应B表中的所有记录,所以,A和B的交叉查询的条目数即为:A条目数*B条目数 语法: select 列名 from A cross join B where 条件 select 列名 from A,B where 条件 内查询 #A表与B表有主外键关系时,查询外键所对应的主键条目 语法: select 列名 from A inner join B on(A.外键 = B.主键);#显式内查询 select 列名 from A,B whe

多表操作

## 多表操作 (DBUtils框架)## # 基本概念 即数据库中一对多及多对多的表之间的操作: # 基本开发步骤: >> 添加jar包: >> 添加Util工具类: >> 添加domain中的基础类: |-- customer |-- orders |-- 添加素材中的表: >> 分析问题: |-- 类与类之间没有外键关系: |-- 那么如何完成表与表之间的关联呢? |-- 类与类之间有的关系 |-- 继承: |-- 包含与引用: |-- 可以通过一个L

Python之Django--ORM连表操作

一对多 class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): user_type = models.ForeignKey(UserType)# user_type对象中封装id,caption username = models.CharField(max_length=32) age = models.IntegerField() 增: 1.外键

学习MySQL之单表操作(二)

##单表操作 ##创建表 CREATE TABLE t_employee( empno INT(11), ename VARCHAR(20), job VARCHAR(40), MGR INT(11), Hiredate DATE DEFAULT '0000-00-00', sal DOUBLE(10,2), comm DOUBLE(10,2), deptno INT(11), UNIQUE INDEX uk_empno(empno) ##使用唯一索引 ); ##增 INSERT INTO t_