1、对数据库的操作

  create database hive_db  //创建数据库hive_db

  create table hive_db.test(字段内容及其格式省略)  //在数据库hive_db中创建test表

  

  create database student_db location '/user/hive/student.db'  //创建数据库student_db,但是在hdfs中显示student.db,在hive控制端中显示studentdb(在有location的情况下)

  create database if not exists hive_db

  show databases like 'hive*'  //结果为hive_db

  

  drop database hive_db  //这种方式只能删除空数据库

  drop database studentdb casecade  //强制删除非空数据库

  describe database hive_db  //显示数据库的信息

  create database teacherdb comment "数据库teacherdb的备注"

2、对表的操作

  create table if not exists hive_db.t1(字段)  //在数据库hive_db中创建表t1

  show tables in hive_db like "t*"  //在数据库hive_db中寻找以t开头的表。

  create table student1 as select * from stu;  //复制表及其数据

  describe extended records;  //查看表信息

  describe formatted records  //查看表详细信息

2.1、内部表与外部表的相互转换:

  alter table student set tblproperties("EXTERNAL"="TRUE");  //内部表转换为外部表

  alter table student set tblproperties("EXTERNAL"="FALSE");  //外部表转换为内部表

2.2、分区表(分区在hdfs上其实是目录,分区名不是表结构中的字段名而是在创建表和分区时另外加的):

  create table stu_partition(id int,name string)

  partitioned by (month string)

  row format delimited fields terminated by '\t';

  此表名为stu_partition按照月份来分区。

  上传数据到分区表:

  load data local inpath '/home/hdc/Document/student1.txt' into table stu_partition partition(month="201906");

  分区表查找:

  select * from stu_partition;  //查找分区表中的所有记录;

  select * from stu_partition where month="201906"  //查找分区表中分区名201906中的所有记录  

  查看分区:

  show partitions stu_partition;

  增加分区:

  alter table stu_partition add partition (month="201908");

  alter table stu_partition add partition (month="201909") partition (month="201910");

  删除分区:

  alter table stu_partition drop partition(month="201908");

  alter table stu_partition drop partition(month="201909"),partition (month="201910");

  ps:二级分区指的是2个分区字段,按照字段的顺序来设置分区顺序,例如:partition(month="201909",day="01")就是一个二级分区,其目录结构是day文件夹是month文件夹的子文件夹。

 利用Hadoop和hive命令创建分区的区别:

  其实Hadoop命令创建分区就是在数据仓库中的表下创建一个文件夹,若将数据导入Hadoop命令创建的分区,再利用hive的select语句查询,将查询不到结果。这是因为Hadoop命令创建的分区在hive中没有关于此分区的元数据信息。

  而利用hive命令创建的分区不仅会在hdfs上的hive数据仓库中创建相应的文件夹,而且还将此文件夹在hdfs上的信息(元数据)存储在hive中的matestore数据库中。

 解决方法:

  (1)msck repair table stu_partition;

   (2)alter table stu_partition add partition(month="201911");

    //此方法为分区表在hdfs上创建文件夹和在hive中创建此文件夹的元数据,之前因为利用Hadoop命令手动创建了文件夹故现在只需创建元数据。

  (3)正常上传数据即load data local inpath '/home/hdc/Document/student1.txt' into table stu_partition partition(month="201911");

2.3、分桶表

  分区表是针对数据的存储路径,分桶表针对的是数据文件。其中分区字段是表外字段,而分桶字段是表内字段。

  create table stu_bucket(

    id int,

    name string

  )clustered by (id) into 4 buckets

  row format delimited fields terminated by '\t';

  上传数据到分桶表只能通过insert方法如下例所示:

  insert into table stu_bucket

  select *from stu_temp;

  利用分桶表对数据进行抽样查询(桶数为z):

  select * from stu_bucket tablesample(bucket x out of y on id)

  注意:x<=y,z%y==0 || y%z==0

  抽样数n=z/y

  从第x桶开始抽取n桶,第一个抽取的是第x桶,第二个桶是x+y

  注意:数据块抽样,按照数据块的百分比抽样,若表的数据大小小于普通的块大小,那么将会返回所有行。

3、对表的操作

删除表:

  drop table if exists stu_partition;

修改表:

  表重命名:alter table stu_partition rename to student_partition;

  修改表中列信息:alter table student_partition change columns id student_id int;

  增加列:alter table student_partition add columns(

        ClassId int commet "备注信息",

        ClassName string comment "备注信息"

      );

  删除或者替换列:alter table student_partition replace columns(

            id string commet "备注信息",

            name string commet "备注信息"

          );//此种替换是指将所用列全部删除再来新建以上两列。、

PS:alter语句改变的是表的元数据信息而不是真正的数据。

  

hive的数据定义之创建数据库和表的更多相关文章

  1. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  2. 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。

    标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报  分类: mysql(1)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  4. 创建数据库和表的SQL语句【转】

    创建数据库和表的SQL语句 转至http://www.cnblogs.com/philanthr/archive/2011/08/09/2132398.html 创建数据库的SQL语句: 1 crea ...

  5. ylb:创建数据库、表,对表的增查改删语句

    ylbtech-SQL Server:SQL Server-创建数据库.表,对表的增查改删语句 SQL Server 创建数据库.表,对表的增查改删语句. 1,ylb:创建数据库.表,对表的增查改删语 ...

  6. sqliteExpert软件使用(创建数据库和表)

    sqliteExpert是sqlite数据库的可视化操作软件,通过该软件可以进行可视化的创建数据库以及表,免去了复杂的建表语句.首先在下面地址下载该软件http://www.ddooo.com/sof ...

  7. Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)

    系列文章导航 Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表) Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数) Adobe ...

  8. centos环境下创建数据库和表的方法

    centos环境下创建数据库和表的方法 //查询数据库的命令: mysql> SHOW DATABASES; +--------------------+ | Database         ...

  9. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

随机推荐

  1. Delphi实现获取磁盘空间大小的方法

    unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...

  2. NSProxy实现AOP方便为ios应用实现异常处理策略

    前段时间关注过objc实现的AOP. 在GitHub找到了其中的两个库:AOP-in-Objective-C 和 AOP-for-Objective-C 第一个是基于NSProxy来实现的:第二个是基 ...

  3. 关于Spring中BeanUtils的一次使用问题记录

    1.问题描述:今天在进行前后端联调的时候,发现商品图片不能正常显示: 2.排查过程:查看浏览器控制台,发现调用接口返回的数据关于图片的字段未返回数据:      然后,又跑了一下Dao层的单元测试,从 ...

  4. python中时间戳,datetime 和时间字符串之间得转换

    # datetime时间转为字符串def Changestr(datetime1):    str1 = datetime1.strftime('%Y-%m-%d %H:%M:%S')    retu ...

  5. oracle sqldeveloper选择性复制备份数据库

    有时需要复制的数据库比较大,复制太慢,或容易出错. 数据库小,简单的 就没这么复杂了,直接导出dmp或用工具都可以.这篇是针对比较大,选择性复制,且复制总是失败的情况. 方法如下. 工具 sqldev ...

  6. 洛谷P1982 小朋友的数字

    题目传送门 这个题的题目有点长,我们先来分析一波. 首先,这个题目中提到了以下几个量 1.最直接的就是每个小盆友手上的数字,这是题目给你的 2.每个小盆友的特征值 题目中给的定义是:每个小朋友的特征值 ...

  7. linux下rpm包安装、配置和卸载mysq

    l   WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/red ...

  8. IsAjaxRequest

    具体来说,IsAjaxRequest代码可以分解为以下功能: public static bool IsAjaxRequest(this HttpRequestBase request) { if ( ...

  9. Vagrant 手册之 Provisioning - 基本用法

    原文地址 虽然 Vagrant 提供了用于配置虚拟机的多个选项,但是有标准用法,好多知识点对这个 provisioner 是通用的. 配置 首先,Vagrantfile 中配置的每个 provisio ...

  10. 使用notepad++写markdown的配置过程

    已过时 下载最新的markdown插件,github 解压后将MarkdownViewerPlusPlus.dll复制一份到notepad就能看到markdown插件的小图标了 设置markdown高 ...