hive 基本命令

hive 启动 hive>quit; --退出hive hive> exit; --exit会影响之前的使用,所以需要下一句kill掉hadoop的进程 >hadoop job -kill jobid
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; --查看数据库的描述及路径

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

hive> creat database database_name location ‘路径’;

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

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

hive>show partitions t1; --查看表有哪些分区

修改表:

hive>alter table table_name rename to another_name; --修改表名

hive>drop table t1 ; --删除表t1 或者: hive> drop table if exists t1;
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文件系统下 '/'目录下的文件

hive笔记: 1、从文件中执行hive查询:$ hive -f .sql文件的路径; e.g $hive -f /path/to/file/xxxx.hql; 在hive shell中可以用source命令来执行一个脚本文件: hive>source .sql文件的路径 e.g. hive> source /path/to/file/test.sql; hive中一次使用命令: $ hive -e “SQL语句”; e.g. $ hive -e “select * from mytable limit 3”;
2、没有一个命令可以让用户查看当前所在的是哪个数据库库
3、在hive内执行一些bash shell命令(在命令前加。并且以;结尾即可) HIVE 基本命令 4、在hive内执行Hadoop的dfs命令:(去掉hadoop,以;结尾)
5、 Hive脚本如何注释: 使用–开头的字符串来表示注释
6、Hive与MySQL相比,它不支持行级插入操作、更新操作和删除操作。Hive也不支持事务。 Hive增加了在Hadoop背景下的可以提高更高性能的扩展。
7、 向管理表中加载数据: Hive没有行级别的插入、删除、更新的操作,那么往表里面装数据的唯一的途径就是使用一种“大量”的数据装载操作,或者仅仅将文件写入到正确的目录下面。 overwrite关键字: load data local inpath ' e n v : H O M E / 目 录 ′ o v e r w r i t e i n t o t a b l e t a b l e n a m e p a r t i t i o n ( 分 区 ) ; 8 、 从 表 中 导 出 数 据 : h a d o o p f s − c p s o u r c e p a t h t a r g e t p a t h 或 者 : 用 户 可 以 使 用 i n s e r t … … d i r e c t o r y … … i n s e r t o v e r w r i t e l o c a l d i r e c t o r y ′ / t m p / 目 录 ′ 这 里 指 定 的 路 径 也 可 以 是 全 U R L 路 径 9 、 h i v e 中 使 用 正 则 表 达 式 ( 1 ) h i v e > s e l e c t ′ p r i c e . ∗ ′ f r o m t a b l e n a m e ; 选 出 所 有 列 名 以 p r i c e 作 为 前 缀 的 列 ( 2 ) 用 L i k e 或 者 R L i k e 10 、 聚 合 函 数 可 以 通 过 设 置 属 性 h i v e . m a p . a g g r 值 为 t r u e 来 提 高 聚 合 的 性 能 : h i v e > h i v e . m a p . a g g r = t r u e ; 11 、 什 么 情 况 下 h i v e 可 以 避 免 进 行 m a p r e d u c e ? 在 本 地 模 式 的 时 候 可 以 避 免 触 发 一 个 m r 的 j o b , 此 外 , 如 果 属 性 h i v e . e x e c m o d e . l o c a l . a u t o 的 值 为 t r u e 的 话 , h i v e 还 户 尝 试 本 地 模 式 进 行 其 他 的 操 作 。 s e t h i v e . e x e c m o d e . l o c a l . a u t o = t r u e ; 说 明 : 最 好 将 s e t h i v e . e x e c m o d e . l o c a l . a u t o = t r u e ; 这 个 设 置 增 加 到 你 的 {env:HOME}/目录' overwrite into table table_name partition (分区); 8、从表中导出数据: hadoop fs -cp source_path target_path 或者:用户可以使用 insert……directory…… insert overwrite local directory '/tmp/目录' 这里指定的路径也可以是全URL路径 9、hive中使用正则表达式 (1) hive> select 'price.*' from table_name; 选出所有列名以price作为前缀的列 (2) 用Like或者RLike 10、聚合函数 可以通过设置属性hive.map.aggr值为true来提高聚合的性能: hive>hive.map.aggr=true; 11、什么情况下hive可以避免进行mapreduce? 在本地模式的时候可以避免触发一个mr的job,此外,如果属性hive.execmode.local.auto的值为true的话,hive还户尝试本地模式进行其他的操作。 set hive.execmode.local.auto=true; 说明:最好将 set hive.execmode.local.auto=true;这个设置增加到你的 env:HOME/overwriteintotabletablenamepartition()8hadoopfscpsourcepathtargetpath使insertdirectoryinsertoverwritelocaldirectory/tmp/URL9hive使1hive>selectprice.fromtablename;price2LikeRLike10hive.map.aggrtruehive>hive.map.aggr=true;11hivemapreduce?mrjobhive.execmode.local.autotruehivesethive.execmode.local.auto=true;sethive.execmode.local.auto=true;HOME/.hiverc配置文件中去。
12、JOIN语句 hive支持通常的SQL JOIN语句,但是只支持等值连接。hive也不支持在on子句中用谓词OR
13、union all 将两个表或者多个表进行合并,每一个union all子查询都必须具有相同的列,而且对应每个字段的每个类型都必须一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值