首先连接 hive shell

直接输入 hive启动, 使用--开头的字符串来表示注释

hive>quit; --退出hive

hive> exit; --exit会影响之前的使用,所以需要下一句kill掉hadoop的进程

hine>hadoop job -kill jobid

1、显示表

hive>create database database_name; 创建数据库

如果数据库已经存在就会抛出一个错误信息,使用如下语句可以避免抛出错误信息:

hive>creat database if not exists database_name;

hive> show databases; 查看数据库;

如果数据库比较多的话,也可以用正则表达式来查看:

hive> show databases like 'h.*';

hive> use default;    --使用哪个数据库;

hive> show tables; 或者支持模糊查询:hive> show tables '*t*';

hive> describe tab_name; --查看表的结构及表的路径

hive> describe database database_name; --查看数据库的描述及路径

2、创建表

hive> create table test(key string);

OK

Time taken: 0.265 seconds

3、创建分区表:

hive> create table logs(ts bigint,line string) partitioned by (dt String,country String);

4、加载分区表数据:

hive> load data local inpath '/home/Hadoop/input/file1' into table logs partition (dt='2014-03-11',country='CN');

5、展示表中有多少分区:

hive> show partitions logs;

6、显示表的结构信息

hive> describe table_name;

hive> describe database database_name;  --查看数据库的描述及路径

7、更新表名称:

hive>alter table table_name rename to another_name;

8、添加新一列:

hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

9、删除表:

hive>drop table t1 ;      --删除表t1 或者:hive> drop table if exists t1;

删除表中数据,但要保持表的结构定义:

hive> dfs -rmr /user/hive/warehouse/records;

10、可以用下面的命令来修改数据库的路径:

hive> creat database database_name location '路径';

hive> drop database if exists database_name; --删除空的数据库

hive> drop database if exists database_name cascade; --先删除数据库中的表再删除数据库;

11、hive不支持修改表中数据,但是可以修改表结构,而不影响数据

有local的速度明显比没有local慢:

hive>load data inpath '/root/inner_table.dat' into table t1; 移动hdfs中数据到t1表中

hive>load data local inpath '/root/inner_table.dat' into table t1; 上传本地数据到hdfs中

hive> !ls; 查询当前linux文件夹下的文件

hive> dfs -ls /; 查询当前hdfs文件系统下 '/'目录下的文件;

它不支持行级插入操作、更新操作和删除操作,也不支持事务,那么往表里面装数据的唯一的途径就是使用一种“大量”的数据装载操作,

或者仅仅将文件写入到正确的目录下面,即以load的方式加载到建立好的表中,且数据一旦导入就不可以修改,加载的目标可以是一个表

或者分区,如果表包含分区,必须指定每一个分区名:

a、使用overwrite关键字,加载本地数据,同时给分区信息:

hive>load data local inpath '${env:HOME}/目录' overwrite into table table_name  partition (分区(ds='2018-05-05'));

目标表(或者分区)中的内容(如果有)会被删除,然后再将 filepath 指向的文件/目录中的内容添加到表/分区中,如果

目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代。

b、将查询结果插入hive表:

hive>insert overwrite table tab_name [partition(par1=val1,par2=val2)] select_statement1 from from_statement;--基本模式

from from_statement

insert overwrite table tab_name [partition(par1=val1,par2=val2)] select_statement1

[insert overwrite table tab_name [partition(par1=val1,par2=val2)] select_statement2]...;--多插入模式

insert overwrite table tab_name partition(par1[=val1],par2[=val2]...) select_statement1 from from_statement;--自动分区模式

c、将查询结果写入HDFS文件系统:

insert overwrite [local] directory directory1 select ... from ...;--基本模式

from from_statement

insert overwrite[local] directory directory1 select_statement1

[ insert overwrite[local] directory directory2 select_statement2];--多插入模式

数据写入文件系统时进行文本序列化,且每列用^A 来区分,\n换行。

d、insert into:

insert into table tab_name [partition(par1=val1,par2=val2)] select_statement1 from from_statement;

12、显示所有函数:

hive>show functions;

hive>describe function fun_name;--查看函数的用法;

hive>select col1[0],col2['b'],col3.c from complex;--查看数组、map、结构;

13、内连接:

hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

查看hive为某个查询使用多少个MapReduce作业

hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

14、外连接:

hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);

hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);

hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);

in查询:Hive不支持,但可以使用LEFT SEMI JOIN

hive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);

15、Map连接:Hive可以把较小的表放入每个Mapper的内存来执行连接操作

hive> SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

INSERT OVERWRITE TABLE ..SELECT:新表预先存在

hive> FROM records2

> INSERT OVERWRITE TABLE stations_by_year SELECT year, COUNT(DISTINCT station) GROUP BY year

> INSERT OVERWRITE TABLE records_by_year SELECT year, COUNT(1) GROUP BY year

> INSERT OVERWRITE TABLE good_records_by_year SELECT year, COUNT(1) WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY year;

CREATE TABLE ... AS SELECT:新表预先不存在

hive>CREATE TABLE target AS SELECT col1,col2 FROM source;

16、创建视图:

hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;

17、查看视图详细信息:

hive> DESCRIBE EXTENDED valid_records;

18、从表中导出数据:

hadoop fs -cp source_path target_path

或者:用户可以使用 insert……directory……

insert overwrite local directory '/tmp/目录' 这里指定的路径也可以是全URL路径

19、hive中使用正则表达式

(1) hive> select 'price.*' from table_name;

选出所有列名以price作为前缀的列

(2) 用Like或者RLike

20、聚合函数

可以通过设置属性hive.map.aggr值为true来提高聚合的性能:

hive>hive.map.aggr=true;

21、什么情况下hive可以避免进行mapreduce?

在本地模式的时候可以避免触发一个mr的job,此外,如果属性hive.execmode.local.auto的值为true的话,hive还户尝试本地模式进行其他的操作。

set hive.execmode.local.auto=true;

说明:最好将 set hive.execmode.local.auto=true;这个设置增加到你的$HOME/.hiverc配置文件中去。

22、JOIN语句

hive支持通常的SQL JOIN语句,但是只支持等值连接。hive也不支持在on子句中用谓词OR

23、union all

将两个表或者多个表进行合并,每一个union all子查询都必须具有相同的列,而且对应每个字段的每个类型都必须一致。

hive链接mysql的shell命令_Hive shell 基本命令相关推荐

  1. shell、shell命令、shell脚本

    1.shell 作用:负责用户和内核之间的交互 shell命令.shell.shell脚本的本质区别 shell命令:用户向系统内核发出的控制请求 shell:将用户命令解析为操作系统能识别的指令,实 ...

  2. linux常用shell命令面试,shell经典笔试题目总结

    shell经典笔试题目总结 守望者整理了一些高手的博客记录的shell面试题分享给大家,有些比较有意思,帮助大家面试或则学习shell编程的学习例子 一 文件内容如下: 100 a         1 ...

  3. Shell 脚本知识回顾 (四) —— Shell 命令及Shell 相关语句

    一.Shell echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg 您可以使用echo实现更复杂的输出格式控制. 显示转义字符 echo & ...

  4. java操作Linux 调用shell命令,shell脚本

    1.问题 在最近做的项目当中,需要用Java调用基于python写的两个不同的模型运行并且得到实验结果: 1.在服务器上运行的文本识别模型 2.在本地Ubuntu中annacoda 虚拟环境中运行的影 ...

  5. 链接mysql服务器的命令是_连接 MySQL服务器的命令是什么?( )_学小易找答案

    [单选题]两块平玻璃构成空气劈尖,左边为棱边,用单色平行光垂直入射,若上面的平玻璃慢慢地向上平移,则干涉条纹 [计算题]迎面而来的两辆汽车的车头灯相距1.0m,问汽车离人多远时它们刚能为人眼所分辨? ...

  6. Mysql —— C语言链接mysql数据库,命令行形式(getopt()函数),用户、用户组增删改查(用户组表内有用户控制的策略字段)

    函数说明--getopt(): 函数说明 getopt()用来分析命令行参数.参数argc和argv分别代表参数个数和内容,跟main()函数的命令行参数是一样的. optstring中的指定的内容的 ...

  7. MongoDB 教程二: 添加, 删除,查询 shell命令

    视频:MongoDB 教程二: 添加, 删除,查询 shell命令 MongoDB Shell 常用操作命令 MonoDB   shell命令操作语法和JavaScript很类似,其实控制台底层的查询 ...

  8. Linux基础-02 Linux命令(shell命令)

    文章目录 二.Linux命令(shell命令) 1. 终端操作 - 终端操作 - 查看shell 3. windows自带的WSL2[补充] 2. inux 命令格式(掌握) - 命令格式 - 获取指 ...

  9. 运行shell命令并捕获输出

    我想编写一个函数,该函数将执行shell命令并以字符串形式返回其输出,无论它是错误消息还是成功消息. 我只想获得与命令行相同的结果. 能做到这一点的代码示例是什么? 例如: def run_comma ...

最新文章

  1. 大数据项目开发案例_大数据分析技术——项目案例2(房价数据分析上)
  2. swing查询输入框无值时出现null异常_如何优雅处理代码中 Null 值引起的 Bug?告别 Null 恐惧症!...
  3. APIO2010 特别行动队 斜率优化DP算法笔记
  4. NeurIPS 2020 | 一种基于动作采样的简单高效的正则化强化学习方法
  5. 集存款(复利单利)贷款为一体的计算器(最新版)
  6. Confluence 6 自定义 Decorator 模板的宏和针对高级用户
  7. 在python中、对于函数定义代码的理解_python中如何理解装饰器代码?
  8. mysql 插入加锁_MySQL的死锁系列- 锁的类型以及加锁原理
  9. Python使用tensorflow中梯度下降算法求解变量最优值
  10. Editor GUI 的 Gamma Correction
  11. Mac利用PD虚拟机安装Centos7
  12. 1. 英语邮件中经常用到的单句 (每次10句)
  13. win7网络发现启用后找不到网络计算机,网络发现启用不了|无法启用网络发现的解决方法...
  14. 利用中文维基百科训练词向量模型
  15. com.thoughtworks.xstream.InitializationException 打包时偶尔就会报错
  16. 文字怎么转化计算机代码,如何把文字转换成代码
  17. 第43届ACM icpc亚洲区域赛焦作站感想
  18. 远程控制桌面,外网电脑PC手机ios安卓mac远程桌面连接内网linux和windows主机,史上最全最详细图文教程
  19. Multisim基础 有极性的电容 添加元件的位置
  20. 手机长时间不用自动断网_手机如果放一段时间不用就自己断开网络连接但 – 手机爱问...

热门文章

  1. 局域网ARP协议和欺骗技术及其对策
  2. 禁用Cookie在web浏览器中读取/写入c#应用程序
  3. JSONPATH使用方法
  4. Asp.net(C#)动态生成表格中的按钮和事件响应
  5. SpringBoot上传图片的示例
  6. 求虚拟机11.0密钥
  7. Linux文本处理之printf:规定输出内容与样式 %规定内容样式 \规定排版样式
  8. python列表删除重复项_五分钟学会三种Excel重复项删除方法,工作效率大杀器!...
  9. java 指针_java多线程学习二十二:::java中的指针
  10. 为什么要用TypeScript