(三)Hive基本操作命令
二,Hive操作
1.DML(DataManipulationLanguage):数据操作语言,用来定义数据库记录; 2.DCL(DataControlLanguage):数据控制语言,用来定义访问权限和安全级别; 3.DQL(DataQueryLanguage):数据查询语言,用来查询记录; 4.DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象 -- 库、表、列等。
1.DDL
创建表、表名、权限、创建数据库等操作 cereate database;.... create table test( name string, friends array<string>, children map<string, int>, address struct<street:string, city:string> ) row format delimited fields terminated by ',' collection items terminated by '_' map keys terminated by ':' lines terminated by 'n';
desc test; desc formatted test;
rz // 上传
hadoop fs -mkdir -p /data/test/RAW/ hdfs dfs -put ./test.txt /data/test/RAW/ load data inpath '/data/test/RAW/test.txt' into table test; select friends[1],children['xiao song'],address.city from test where name="songsong";
0: jdbc:hive2://bd1603:10000> show create table test;
+-----------------------------------------------------------------+--+
| createtab_stmt |
+-----------------------------------------------------------------+--+
| CREATE TABLE test
( |
| name
string, |
| friends
array<string>, |
| children
map<string,int>, |
| address
struct<street:string,city:string>) |
| ROW FORMAT DELIMITED |
| FIELDS TERMINATED BY ',' |
| COLLECTION ITEMS TERMINATED BY '_' |
| MAP KEYS TERMINATED BY ':' |
| LINES TERMINATED BY 'n' |
| STORED AS INPUTFORMAT |
| 'org.apache.hadoop.mapred.TextInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' |
| LOCATION |
| 'hdfs://bdp/bdp/hive/metastore/warehouse/bdp.db/test' |
| TBLPROPERTIES ( |
| 'COLUMN_STATS_ACCURATE'='true', |
| 'numFiles'='1', |
| 'totalSize'='144', |
| 'transient_lastDdlTime'='1593673125') |
+-----------------------------------------------------------------+--+
REPLACE COLUMNS
alter table test replace columns (name string,friends array<string>, children map<string,int>,address struct<street:string,city:string>,age varchar(100));
2.DML
增删改查: 表变更,数据更新,数据加载,数据删除,对数据的操作等
alter table:变更结构时使用 insert overwrite:插入 load:对表进行数据的加载
查看库:show databases; 建立库:create database 库名; 进入库:use 库名; 查看表:show tables; 切换库:use + 表名; 查看表的信息:desc 表名; 查看表的格式:desc formatted 表名; 查看表的分区(有分区才能查看):show partitions 表名;
在shell中将数据文件先上传到hdfs上的目录下,如:hdfs dfs -put 文件名 /xxxx 加载数据到表中:load data inpath '/hdfs目录名/文件名全称' into table 表名; (执行命令后,原数据文件被移动到了hive的目录下面) 查看数据:select * from 表名; 将一个库中表内的数据,copy到另一个库的表中:insert overwrite table 库1.表名 select * from 库2.表名;
清空表数据:truncate table 表名; 删除表结构:drop table if exists 表名; 删除库:drop database if exists 库名; 删除分区:alter table 表名 drop partition (区名='分区名') 例:hive> alter table tablename drop partition(load_date='2019-01-01'); 保留非空字段,删除其余: insert overwrite table 表名 select * from 表名 where 字段名 is not null;
进入hive cli后,使用本地模式,不使用集群,提高测试速度: set hive.exec.mode.local.auto=true;
3.内部表
create table test:存储想被删除的数据(用过就要删除的敏感信息等) tips:应用场景不多
4.外部表
- 创建dept表
CREATE EXTERNAL TABLE IF NOT EXISTS dept (
DEPTNO int,
DNAME varchar(255),
LOC varchar(255)
) row format delimited fields terminated by 't'
location '/data/inner/ODS/01/dept';
- 创建emp表
CREATE EXTERNAL TABLE IF NOT EXISTS emp (
EMPNO int,
ENAME varchar(255),
JOB varchar(255),
MGR int,
HIREDATE date,
SAL decimal(10,0),
COMM decimal(10,0),
DEPTNO int
) row format delimited fields terminated by 't'
location '/data/inner/ODS/01/emp';
- 创建salgrade表
CREATE EXTERNAL TABLE IF NOT EXISTS salgrade (
GRADE int,
LOSAL int,
HISAL int
) row format delimited fields terminated by 't'
location '/data/inner/ODS/01/salgrade';
hadoop fs -mkdir -p /data//inner/RAW//01/test/ /data/inner/RAW/01/salgrade/ /data/inner/RAW/01/dept /data/inner/RAW/01/emp /data//inner/ODS//01/test/ /data/inner/ODS/01/salgrade/ /data/inner/ODS/01/dept /data/inner/ODS/01/emp
rz // 上传
hadoop fs -put emp.txt /data/inner/RAW/01/emp hadoop fs -put dept.txt /data/inner/RAW/01/dept hadoop fs -put salgrade.txt /data/inner/RAW/01/salgrade
load data inpath '/data/inner/RAW/01/emp/emp.txt' into table emp; load data inpath '/data/inner/RAW/01/dept/dep.txt' into table dept; load data inpath '/data/inner/RAW/01/salgrade/salgrade.txt' into table salgrade;
5.加载数据
load data inpath '' load data inpath '/data/inner/RAW/01/emp/emp.txt' into table emp;//新增 load data inpath '/data/inner/RAW/01/emp/emp.txt' overerite into table emp;//覆盖 create table t_user1(name string) row format delimited fields terminated by ',' lines terminated by 'n'; create table t_user2(friends array<string>) row format delimited fields terminated by ',' collection items terminated by '-' lines terminated by 'n';
from test insert overwrite table t_user1 select name insert overwrite table t_user2 select friends;
CREATE TABLE IF NOT EXISTS t_user_test ( GRADE int, LOSAL int, HISAL int ) partitioned by (day string) row format delimited fields terminated by 't' location '/data/inner/ODS/01/t_user_test';
load data local inpath '/data/test/ftp/test.txt' into table t_user_test partition(day='99990101'); insert into table t_user_test partition(day='101000101') values(11,111,111); insert overwrite table t_user_test partition(day='10100101') select count(1),count(2),count(3) from t_user ;
6,数据导出与备份
导出: insert overwrite local directory '/data/ftp/01/user' select * from t_user; insert overwrite local directory '/data/ftp/01/user' ROW FORMAT DELIMITED fields terminated by ',' collection items terminated by '-' map keys terminated by ':' lines terminated by 'n' select * from t_user;
备份: export table t_user to '/data/ftp/01/user'; import from '/data/ftp/01/user';
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android自定义view仿微信刷新旋转小风车
- sqlmap手册
- Android绘制动态折线图
- Python PIL库图片灰化处理
- django 实现简单的插入视频
- 快速解决Django关闭Debug模式无法加载media图片与static静态文件
- Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
- Django media static外部访问Django中的图片设置教程
- Python图片处理模块PIL操作方法(pillow)
- Android自定义View实现圆环带数字百分比进度条
- Python按照list dict key进行排序过程解析
- Java并发编程的艺术(一)
- Python3.7 读取音频根据文件名生成脚本的代码
- python如何判断IP地址合法性
- 从*Application.java解读SpringBoot