DDL(数据定义语言)

create、drop、alter、truncate、show、describe

DML(数据控制语言)

load、insert、update、delete、import/export、explain plan

1. 关于数据库

->创建数据库
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
->使用某个数据库
USE DBname
->删除数据库
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

2. 关于表

->列出表
show tables;
show tables '.*s';
->创建一张表
例:
hive> create table if not exists student(
> num int,
> name string) row format delimited fields terminated by '\t';
指定数据库位置
create database if not exists db01 location '/locate';
use db01;
create table if not exists tb01(
name string
) row format dilimited field terminated by '\t';
dfs -ls /locate
->修改表
hive> ALTER TABLE student ADD COLUMNS (new_col INT);
hive> ALTER TABLE student ADD COLUMNS (new_col2 INT COMMENT 'a comment');
hive> ALTER TABLE events RENAME TO 3koobecaf;
->加载数据
本地
->load data local inpath '/home/liuwl/opt/datas/studen.txt' into table student;
->查询数据
select * from student;
->查看描述表
desc student;
desc extended student;
desc formatted student;
->删除表
drop table [if exists] student;
->清空表
truncate table student [PARTITION partition_spec];

3. 关于方法

->查看方法
show functions;
->查看方法描述
desc function upper;
desc function extended upper;
desc function formatted upper;

4. 更换log日志配置

conf下复制一份log4j
配置:hive.log.dir=/home/liuwl/opt/modules/hive-0.13.1-bin/logs
重启hive查看

5. 配置客户端Cli显示数据库名及表名

-->hive.cli.print.header--true
-->hive.cli.print.current.db--true

6. hive的基本参数用法

--> bin/hive -help 或 bin/hive -H
--> --database dbname # bin/hive --database hadoop09
--> -e "sql语句" # bin/hive -database hadoop09 -e "select * from student;"
--> -f sqlfile # bin/hive -f sql.txt
--> --hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
启动时修改配置属性(临时性)
例:
bin/hive --hiveconf hive.cli.print.current.db=false

hive>set hive.cli.print.current.db=true;

7. hive交互式命令操作

->quit/exit
->set key=value
->set
->! 访问本地文件系统 !ls /
->dfs 访问hdfs dfs -ls /

8. 创建表的三种方式

1> 普通创建
-> create tabele if not exists student(
num int,
name string
) row format delimited fields terminated by '\t';
stored as textfile;
load data local inpath '/home/liuwl/opt/datas/student.txt' into table student;
2> as select 子查询方式
-> create table if not exists t_student_1 as select name from t_student;
3> like 方式(仅复制表结构)
-> create table if not exists t_student_2 like t_student;

9. 表的类型

创建一个新的数据库
create database if not exists workdb;
use workdb;
创建职员表
create table if not exists 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 dept(
deptno int,
dname string,
loc string) row format delimited fields terminated by '\t';
分别加载表数据
load data local inpath '/home/liuwl/opt/datas/emp.txt' [overwtite] into table emp;
load data local inpath '/home/liuwl/opt/datas/dept.txt' [overwtite] into table dept;
外部表(External)举例:多个分析组(pv,uv)共同分析一张表出现的问题:
-> hive不能多窗口登录使用mysql替换解决
-> 多个分析人员分以一张表
-> 方案1:采用链接已存在表,如下
create table if not exists empl(
empno int,
ename string,
job string,
hiredate string,
sal double,
comm double,
deptno int
) row format delimited fields terminated by '\t'
location '/user/hive/warehouse/workdb/emp';
出现的问题:当该分析人员使用完该表,将其删除,原来关联的元数据与真实表一并被删除
-> 方案2:采用建立外部表(EXTERNAL)f方式
create external table if not exists empl(
empno int,
ename string,
job string,
hiredate string,
sal double,
comm double,
deptno int
) row format delimited fields terminated by '\t'
location '/user/hive/warehouse/workdb/emp';
查看表类型:desc formatted empl;
进行删除测试,删除了该表的元数据,并没有删掉真实表,解决问题
分区表(Patitioned)
随着时间的增长,积累的分析文件也会增加,导致分析的表也会增多,如果都放在一个目录中
查询时或多或少影响执行效率,但如果根据时间或其他进行分区(单独建立分区),当我们指定
去分析某些表时并不是全表加载而是指定加载想要数据,执行效率也会很明显
创建分区表(示例) # date字段是逻辑的,虚拟的
-> create table if not exists emp_part(
empno int,
ename string,
job string,
hiredate string,
sal double,
comm double,
deptno int
) partitioned by (date string)
row format delimited fields terminated by '\t'
load data local inpath '/home/liuwl/opt/datas/emp.txt' into table emp_part partition (date = "20161027");
load data local inpath '/home/liuwl/opt/datas/emp.txt' into table emp_part partition (date = "20161028");
load data local inpath '/home/liuwl/opt/datas/emp.txt' into table emp_part partition (date = "20161029");

Hive_DDL与DML的更多相关文章

  1. 数据库 DML、DDL、DCL区别 .

    总体解释: DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的 ...

  2. Oracle数据库操作分类DDL、DML、DCL、TCL类别清单异同

    DDL Data Definition Language (DDL) statements are used to define the database structure or schema. S ...

  3. DDL/DML是什么?

    DDL:(Data Definition Language)数据库定义语言 它是定义数据库的语言, 里面包含: CREATE ALTER DROP TRUNCATE COMMENT RENAME DM ...

  4. jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化

    上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 // 创建驱动注册对象 Class. ...

  5. jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL

    |- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...

  6. RDBMS DML DDL

    RDBMS RDBMS 指的是关系型数据库管理系统. RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL ...

  7. Oracle(DML)

    数据操作语言: insert update delete 事务控制语言: commit rollback savepoint 1.insert语句 两种格式: 直接插入 子查询插入 1. 直接插入基本 ...

  8. MySQL DML 整理

    DML(Data Manipulation Language)数据操纵语言statements are used for managing data within schema objects. 由D ...

  9. Vertica并发DML操作性能瓶颈的产生与优化(转)

    文章来源:中国联通网研院网优网管部IT技术研究团队 作者:陆昕 1. 引言 众所周知,MPP数据库以其分布式的超大存储能力以及列式的高速汇总能力,已经成为大数据分析比不可少的工具.Vertica就是这 ...

随机推荐

  1. C语言中的位操作(14)--反转比特位

    本篇文章主要讲述几种反转比特位的方法: 将一个32位数:abcd efgh 转置为hgfe dcba 1.常规方法 unsigned int v; // 目标待转置数 unsigned int r = ...

  2. WebView中实现文件下载功能

      WebView控制调用相应的WEB页面进行展示.当碰到页面有下载链接的时候,点击上去是一点反应都没有的.原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置Web ...

  3. 【转】CDH5.x升级

    http://www.cloudera.com/content/www/zh-CN/documentation/enterprise/5-3-x/topics/cm_ag_upgrade_cm5.ht ...

  4. hdu 1069 Monkey and Banana

    Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  5. JQ学习(三)-ajax

    jQuery - AJAX jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法 ...

  6. 常用eclipse 快捷键

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  7. RTTI (Run-Time Type Identification,通过运行时类型识别) 转

    参考一: RTTI(Run-Time Type Identification,通过运行时类型识别)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型.   RTTI提供了以下两个 ...

  8. (转)sscanf() - 从一个字符串中读进与指定格式相符的数据

    (转)sscanf() - 从一个字符串中读进与指定格式相符的数据 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, stri ...

  9. Visual Studio工具栏中无法选择调试设备

    Visual Studio工具栏中无法选择调试设备 在Visual Studio工具栏中,默认显示已经识别的设备.用户可以从中选择对应的设备,进行调试和部署App.但是由于误操作,可能导致该选项丢失. ...

  10. 【bzoj3624】【apio2008】免费道路

    2016/06/25 诸老师讲的图论,听了这道题很想写一下,但是看来要留到期末考后了. 07/01 有的标记是说生成树,有的是并查集...然而我只是觉得这棵奇怪的生成树蛮精妙的... 题目比较难过的只 ...