hive的简单使用
- 一、一些说明
- 1.支持的操作
- hive 默认不支持updata 和 delete操作 insert也是执行缓慢,主要用于数据的计算
- hive 数据类型---字符串,大部分与java一致。
- 2.内外表的区别
- 内部表:完全交给hive管理,数据会存储在hive所在路径,删除时删掉源文件。
- 外部表:增加hive管理的表,创表时记录数据所在路径,不移动数据,删除时不删除源文件,只删除路径链接。
- 二、简单的命令
- show databases; 显示数据库
- create database dbName; 创建数据库
- drop database [IF EXISTS] dbName [cascade] 有则强制删除
- use {databaseName}; 使用某一数据库
- desc tabName 查看表结构
- show tables; 查看当前库下的表
- show tables [like '*'] [in dbName] 查看某库某些表
- create table tabName{columnName columnType,...} 建(内部)表(需指定分隔符)
- create external table tabName {同上} 建(外部)表
- location 'hdfs.path'; 指定外部表源数据路径
- row format delimited fields terminated by '*'; 直接写在创表语句末尾。
- lines terminated by '\n'; 航分隔符默认"\n",暂时也只支持这一个
map keys terminated by- alter table tabName RENAME TO newName; 重命名表名
- alter table tabName ADD COLUMNS (N T); 向已有表中添加列
- insert into tabName(columnName)values(data); 向表中添加数据
- drop table tbname; 删除表结构及数据
- HIVE的数据导入的两种范式:
从linux上导入- load data local inpath 'linux根目录下写' into table dbName.tabName;
从HDFS的某一目录导入- load data inpath 'hdfs根目录下开始写' into table dbName.tabName;
- --------------------------------- --->此方式上传会删除源文件,相当于将数据剪切
- hadoop job -kill {job_id} 结束失败job的命令
三、HIVE的JDBC
- //1.加载驱动
- Class.forName("org.apache.hive.jdbc.HiveDriver");
- //2.打开连接
- Connection conn = DriverManager.getConnection("jdbc:hive2://sz01:10010/test");
- //mysql连接仅此处不同,三个参数
- //jdbc--->(url = jdbc:mysql://IP:3306/dbName, u,p)
- //3.获得操作会话对象
- Statement statement = conn.createStatement();
- //4.操作hive
- String sql = "select * from test1 ";
- //5.接受结果
- ResultSet rSet = statement.executeQuery(sql);
- while (rSet.next()) {
- System.out.println(rSet.getInt(1)+"\t"+rSet.getString(2));
- }
- //6.关闭连接
- rSet.close();
- statement.close();
- conn.close();
四、常用的建表语句
- 直接建表法: create table table_name(col_name data_type);
- 查询建表法: create table table-name as (查询sql)------------------------->有数据,会执行MR过程
- like建表: create table t2 like t1;------------------------------------------------>无数据,不执行MR过程
创建时一般需指定表的结构等信息
- row format delimited
- fields terminated by ',' 列分隔符,行分隔符默认为"\n",一般不配置
- collection items terminated by '-'
- map keys terminated by ':'
- location '/user/t2' 数据文件的位置(linux系统上的)----外部表
- stored as textfile; 数据格式默认为文本类型
存储格式 | 存储方式 | 特点 |
---|---|---|
TextFile | 行存储 | 存储空间消耗比较大,并且压缩的text 无法分割和合并 查询的效率最低,可以直接存储,加载数据的速度最高 |
SequenceFile | 行存储 | 存储空间消耗最大,压缩的文件可以分割和合并 查询效率高,需要通过text文件转化来加载 |
RCFile | 数据按行分块 每块按照列存储 |
存储空间最小,
查询的效率最高 ,
需要通过text文件转化来加载,
加载的速度最低。
压缩快 快速列存取。
读记录尽量涉及到的block最少
读取需要的列只需要读取每个row group 的头部定义。
读取全量数据的操作 性能可能比sequencefile没有明显的优势
|
ORCFile | 数据按行分块 每块按照列存储 | 压缩快,快速列存取 ,效率比rcfile高,是rcfile的改良版本 |
Parquet | 列存储 | 相对于PRC,Parquet压缩比较低,查询效率较低,不支持update、insert和ACID.但是Parquet支持Impala查询引擎 |
- 五、保存hive表查询结果的方法
1.保存到hdfs 在hdfs上运行
hive -e "sql" >> /output/out.txt 一定要双引号
hive -f hive.sql > /output/out.txt
2.保存到hdfs上 hive中执行
insert overwrite dirctory /output/a.txt sql
不支持 insert into 导出
- 3.保存到linux上
insert overwrite local directory /tmp/a.txt sql- 4.保存到hive表上
insert into table tName SQL 追加导入
insert overwrite table tName SQL 覆盖导入
5.创表保存数据
create table tName as sql
hive的简单使用的更多相关文章
- Hive 的简单使用及调优参考文档
Hive 的简单使用及调优参考文档 HIVE的使用 命令行界面 使用一下命令查看hive的命令行页面, hive --help --service cli 简化命令为hive –h 会输出下面的这 ...
- [转]Hive:简单查询不启用Mapreduce job而启用Fetch task
转自:http://www.iteblog.com/archives/831 如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下: hive> SEL ...
- hive中简单介绍分区表
所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...
- [Hive_add_3] Hive 进行简单数据处理
0. 说明 通过 Hive 对 duowan 数据进行简单处理 1. 操作流程 1.1 建表 create table duowan(id int, name string, pass string, ...
- hive 中简单的udf函数编写
.注册函数,使用using jar方式在hdfs上引用udf库. $hive.注销函数,只需要删除mysql的hive数据记录即可. delete from func_ru ; delete from ...
- hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)
一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...
- Hive之简单查询不启用MapReduce
假设你想查询某个表的某一列.Hive默认是会启用MapReduce Job来完毕这个任务,例如以下: 01 hive> SELECT id, money FROM m limit 10; 02 ...
- hadoop生态系统学习之路(六)hive的简单使用
一.hive的基本概念与原理 Hive是基于Hadoop之上的数据仓库,能够存储.查询和分析存储在 Hadoop 中的大规模数据. Hive 定义了简单的类 SQL 查询语言,称为 HQL.它同意熟悉 ...
- hive的简单理解--笔记
Hive的理解 数据仓库的工具 Hive仅仅是在hadoop上面包装了SQL: Hive的数据存储在hadoop上 Hive的计算由MR进行 Hive批量处理数据 Hive的特点 1 可扩展性(h ...
随机推荐
- Linux mysql 5.5.10 二进制安装过程记录和 修改 密码 登录
1.useradd clouder2.解压缩mysql.tar.bz2到/home/clouder2.mv /etc/my.cnf /etc/my.cnf.bak3./home/clouder/mys ...
- 在 S5PV210 的 开发板上 点亮 一个 LED 灯
参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准 ...
- JAVA类加载和初始化
JAVA类的加载和初始化 一.类的加载和初始化过程 JVM将类的加载分为3个步骤: 1.加载(Load):class文件创建Class对象. 2.链接(Link) 3.初始化(Initialize) ...
- CentOS7 搭建RabbitMQ集群 后台管理 历史消费记录查看
简介 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接 ...
- 正方形(类型:枚举、一级、C++)
题目描述 有一个正方形,四个角的坐标分别是(1,-1),(1,1),(-1,-1),(-1,1).写一个程序,判断一个给定的点(x,y)是否在这个正方形内(包括正方形边界),如果在正方形内输出“Yes ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- python里的默认参数
def extendList(val, test=[]): test.append(val) return test list1 = extendList(10) list2 = extendList ...
- Java调用WeChat's API总结
微信公众号结合着内置浏览器,有着普通浏览器无法完成的服务,前者可以获取浏览页面的微信用户的信息,从而根据信息为用户提供基于微信的更多服务:而后者仅仅能够浏览页面,通过用户的输入信息与用户互动. 本人根 ...
- 构建WebGL目标时的内存考量
Memory Considerations when targeting WebGL 构建WebGL目标时的内存考量 Memory in Unity WebGL can be a constraini ...
- DELPHI DOUBLE不解之迷
procedure TForm1.cmd2Click(Sender: TObject);var str1, str2: string; LValue1: Double; LValue2: Extend ...