Hive 常用命令和语句
示例数据库为 db_hive
1、 创建表 create-table.sql
create table if not exists db_hive.tb_user
(
id int,
username string comment '用户名',
age int comment '年龄',
address string comment '地址'
)
comment '用户表'
row format delimited fields terminated by ','
stored as textfile
location '/user/hive/warehouse/db_hive.db/db_user'
2、执行创建表
hive -f 'create-table.sql'
3、加载数据到 tb_user 表中
数据文件 /root/files/tb_user.txt
1001,Logan,16,shenzhen
1002,Herry potter,12,Magic school
1003,孙悟空,500,花果山
Hive交互式命令行执行命令 load data local inpath '/root/files/tb_user.txt' into table db_hive.tb_user;
如下所示:
hive (db_hive)> load data local inpath '/root/files/tb_user.txt' into table db_hive.tb_user;
如果要覆盖旧数据,可以加 overwrite,如下所示
hive (db_hive)> load data local inpath '/root/files/tb_user.txt' overwrite into table db_hive.tb_user;
4、查询数据
hive -e "select id,username from db_hive.tb_user"
5、根据已有表创建只有部分字段的子表
create table if not exists db_hive.tb_user_sub
as
select id,username from db_hive.tb_user;
6、 like 创建表
create table if not exists db_hive.tb_user_like like db_hive.tb_user;
插入数据
insert into table db_hive.tb_user_like select * from db_hive.tb_user;
7、重命名表
alter table tb_user_like rename to tb_user_rename ;
8、 创建外部表,删除时只删除元数据,不会删除表数据
create external table if not exists db_hive.tb_ext(id string);
9、创建分区表
create table if not exists db_hive.tb_logs(
ip string,
text string,
log_time string
)
partitioned by (month string)
row format delimited fields terminated by "\t";
数据文件 /root/files/tb_logs.txt
192.168.32.100 login 20190429072650
192.168.32.100 order 20190429072730
192.168.32.101 browse 20190429072812
载入数据
load data local inpath '/root/files/tb_logs.txt' into table db_hive.tb_logs partition (month = '')
查询数据
select ip,text,log_time from tb_logs where month = '';
10、手工创建分区数据及修复分区表
创建分区目录
hdfs dfs -mkdir -p /user/hive/warehouse/db_hive.db/tb_logs/month=201905
上传数据文件到分区目录下
hdfs dfs -put /root/files/tb_logs.txt /user/hive/warehouse/db_hive.db/tb_logs/month=201905
此时执行查询
select count(distinct ip) from db_hive.tb_logs where month = '';
查询结果为0。
【原因】:数据并未添加到分区中,查看配置的MySQL元数据信息
mysql> use hive_metastore;
mysql> select * from PARTITIONS;
示例配置的Hive元数据存放为MySQL数据库中的 hive_metastore 数据库
查询分区表 PARTITIONS 中的数据,发现只有一条记录,如下所示:
+---------+-------------+------------------+--------------+-------+--------+
| PART_ID | CREATE_TIME | LAST_ACCESS_TIME | PART_NAME | SD_ID | TBL_ID |
+---------+-------------+------------------+--------------+-------+--------+
| 1 | 1556494255 | 0 | month=201904 | 29 | 28 |
+---------+-------------+------------------+--------------+-------+--------+
【修复方法一】直接执行修复命令
msck repair table tb_logs
此时分区表中的数据如下:
+---------+-------------+------------------+--------------+-------+--------+
| PART_ID | CREATE_TIME | LAST_ACCESS_TIME | PART_NAME | SD_ID | TBL_ID |
+---------+-------------+------------------+--------------+-------+--------+
| 1 | 1556494255 | 0 | month=201904 | 29 | 28 |
| 2 | 1556495227 | 0 | month=201905 | 30 | 28 |
+---------+-------------+------------------+--------------+-------+--------+
执行查询命令
select count(distinct ip) from db_hive.tb_logs where month = '';
返回结果为2,数据已正常加入分区。
【修复方法二】 使用增加分区命令
操作步骤:创建新分区目录并上传数据文件,命令如下:
hive (db_hive)> dfs -mkdir -p /user/hive/warehouse/db_hive.db/tb_logs/month=201906;
hive (db_hive)> dfs -put /root/files/tb_logs.txt /user/hive/warehouse/db_hive.db/tb_logs/month=201906;
执行增加分区命令
alter table tb_logs add partition(month = '');
查询数据,测试结果正常。
此时元数据分区表中数据如下:
+---------+-------------+------------------+--------------+-------+--------+
| PART_ID | CREATE_TIME | LAST_ACCESS_TIME | PART_NAME | SD_ID | TBL_ID |
+---------+-------------+------------------+--------------+-------+--------+
| 1 | 1556494255 | 0 | month=201904 | 29 | 28 |
| 2 | 1556495227 | 0 | month=201905 | 30 | 28 |
| 3 | 1556495635 | 0 | month=201906 | 31 | 28 |
+---------+-------------+------------------+--------------+-------+--------+
查看表分区命令
show partitions db_hive.tb_logs;
11、 导出表数据
export table db_hive.tb_logs to '/user/hive/warehouse/export/db_hive/tb_logs';
12、 导入表数据
创建表
create table tb_logs_like like tb_logs;
导入数据
import table tb_logs_like from '/user/hive/warehouse/export/db_hive/tb_logs';
13、导出数据到本地文件
insert overwrite local directory '/root/files/hive_out'
row format delimited fields terminated by '\t' collection items terminated by '\n'
select * from db_hive.tb_logs;
Hive 常用命令和语句
.
Hive 常用命令和语句的更多相关文章
- 大数据-Hive 常用命令
Hive 启动 ~$ hive 退出 hive>quit; --退出hive or hive> exit; --exit会影响之前的使用,所以需要下一句kill掉hadoop的进程 > ...
- MySQL常用命令和语句
1.常用SQL语句 1)常用函数/*type可取值为:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUT ...
- HIVE常用命令之MSCK REPAIR TABLE
MSCK REPAIR TABLE命令主要是用来解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在hive中无法被查询到的问题.我们知道hive有个服务叫metastor ...
- Hive 常用命令
1.hive模糊搜索表 show tables like '*name*'; 2.查看表结构信息 desc formatted table_name; desc table_name; 3.查看分 ...
- MySQL常用命令与语句
目录 Shell命令 查看系统信息 查看系统变量 设置系统变量 数据库操作 查看表信息 修改表语句 操作表 操作索引 操作约束 操作列 查询常用语句 Shell命令 mysql -uroot -p12 ...
- Hive常用命令
本位为转载,原地址为:http://www.cnblogs.com/BlueBreeze/p/4232421.html #创建新表 hive> CREATE TABLE t_hive (a in ...
- 【mysql】工作中mysql常用命令及语句
1.查看mysql版本号 MySQL [release_test_oa]> select version(); +------------+ | version() | +----------- ...
- Hive记录-Hive常用命令操作
1.hive支持四种数据模型 • external table ---外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该 ...
- Hive常用命令及作用
1-创建表 -- 内部表 create table aa(col1 string,col2 int) partitioned by(statdate int) ROW FORMAT DELIMITED ...
随机推荐
- java——newInstance()方法和new关键字
https://www.cnblogs.com/liuyanmin/p/5146557.html 这两个都可以创建一个对象,那么这样个东西有什么不一样呢?什么时候用new,什么时候用newInstan ...
- java高级篇
Method对象可以得到任何一个类的任何方法的定义(只需要传入方法的名字和参数即可) class Ming { private void speak() { System.out.println(&q ...
- 性能测试工具LoadRunner23-LR之Analysis 性能分析
一.图表分析 1.Average Transaction Response Time(事务平均响应时间) “事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测 ...
- Linux平台命令挂载U盘——实现数据共享
废话少说,一一道来,Linux中按照步骤来做就可以啦.(嵌入式平台) 1.先看看本地的mount信息 # mountrootfs on / type rootfs (rw)/dev/root on / ...
- (转)python 列表与元组的操作简介
python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...
- jQuery 间歇式无缝滚动特效分享(三张图片平行滚动)
最近项目中门户首页需要做出图片间歇式无缝滚动特效,但是在网上找资料都是不太理想,不过可以指导.最后自己写了一个demo实现了这个特效,分享出来. 1.jquery.cxscroll.js /*! * ...
- vscode好用的扩展及常用的快捷键
1.open-in-browser 或者view in browser 安装后右键即可快速打开浏览器 2.quokka调试工具插件,能对正在编写的代码提供实时反馈,并能预览变量的函数和计算结果 3. ...
- MS .NET企业级应用架构设计笔记1(关于业务层)
本文针对<MS .NET企业级应用架构设计>业务层前半部分做了相关笔记并记录了自己的一点想法.对于后半部分的具体模式将在第二次笔记中体现. 关于Layer与Tier Layer一般用来 ...
- 电路中GND和GROUND、VCC,VDD,VEE,VSS
电路解析:GND和GROUND.VCC,VDD,VEE,VSS 参考: http://www.elecfans.com/dianzichangshi/20160822432514.html 一.解释版 ...
- 【从业余项目中学习2】C# 实现调用Matlab函数(Visual Studio:2008, Matlab:R2009a)
最近正在给客户做的个人项目,要求实现C#与Matlab之间的调用,即C# winform界面收集用户输入的参数,将参数传递给Matlab的算法计算,Matlab函数返回的结果显示在winform界面上 ...