- 浏览: 599580 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
一.Hive 简介
Hive是基于 Hadoop 分布式文件系统的一种数据库,它的数据都是以文件形式存在的。
Hive中的每一条记录对应于文件中的一行,各个字段的值是被指定的分隔符分隔的。在读数据的时候,会将文件行以分隔符分隔字段值,并将各个值按顺序给字段;现有的 hive 的权限基于文件的,如果某个用户对表对应的文件有读的权限,那么用户就对表有读的权限。
当前 hive 运用最多的是分区,hive 会将各个分区的数据分别放在不同的文件夹下;
在用 hive 执行 SQL 语句时,是将语句处理成 mapreduce 程序运行的。
二.数据类型
整型 int 4 字节 smallint 2 字节 Tinyint 1 字节 bigint 8 字节
浮点数 float double
字符串 string
布尔型 boolean
不支持日期时间型
不支持二进制串
其它数据类型
ARRAY
MAP
STRUCT
三.支持各种内建函数
略...
四.DDL(数据定义)
1.创建和删除建数据库
2.建表
external 建立外部表。
外部表的好处:
a.可以直接将数据文件放到 location 指定的目录,在 hive中即可查询出数据;
b.可以多个表使用一份数据,只需将 location 指向同一个目录;
partitioned by 建立分区表。
分区表是将分区列值一样的放到一个文件中,如果该分区列下还有子分区,会在该文件夹下再分小文件夹;如图:
row format 指定表中行列分隔符。
Stored as 文件存储的格式,此处的 textfile。
Location 指定表中数据文件存放的 hdfs 目录。该参数默认为:
/user/hive/warehouse/dbname.db/tablename
也可以用
3.建表的时候可以同时插入数据
但是这种方法不支持外部表和分区表,并且在建表时不能指定详细的列。
4. 删除表
删除的表可能是外部表或者内表,在删除外部表时只是删除了表结构,数据文件依然存在。
5. 修改表
增加删除分区
重命名
替换原有的列,替换时只是在分区列之前,分区列不变
增加列,之后在分区之前的最后一列加,不能指定到某列之后
内部表转外部表
外部表转内部表
6. Show/describle
显示表中中含有tianzhao的表名
show partitions table_name;
展示表中现有的分区
desc formatted table_name;
可以描述出很多信息,包括字段,location,分区字段,是内表或者外表等;
show functions;
显示可以用的函数列表,包括可用的udf函数。
describe function length;
返回length函数的说明
show table extended like order_joined_extend partition(create_date='2012-09-01',type='ddclick_bang');
五.DML(数据操作)
Hive 只支持 select、insert,不支持 delete、update
1.load 数据
Load本地数据到hive,最好指定本地文件的绝对路径
追加导入数据:
覆盖导入数据:
加载hdfs上的数据到hive表
如果是外表可以直接将数据文件拷贝到location的目录
内表或者外表都可以用load的方法
load 数据时:
如果数据在本地,会将本地数据复制一份到 hdfs 中表的 location;
如果是 hdfs 是的数据,会直接移动到 location;所以如果 load 数据的数据文件跟 location 相同,会报错;
2.Insert
插入数据到非分区表
插入数据到分区表,需要指定分区值
一个输入,多个输出
动态分区
Hive将会以select的最后两列作为动态分区的值,将createdate,type相同的列插入到一个
partition中
将query的结果写入文件
写到本地文件:
写到hdfs:
3.select
一般的 SQL 语句都支持
在使用聚合函数时,select 的列必须是 group by 后面的字段或者只用了聚合函数的;
4.Join
Hive 只支持等值连接(equality joins)、外连接(outer joins)和(left semi join)。Hive不支持所有非等值的连接,因为非等值连接非常难转化到 map/reduce 任务;Hive也不支持 in 子查询,但是可以用 left semi join 实现 in 操作。另外,Hive支持多于 2 个表的连接。
JOIN子句中表的顺序很重要,一般是把数据量大的表放后面。
转自:http://qingyuan-jishu.iteye.com/blog/2068536
Hive是基于 Hadoop 分布式文件系统的一种数据库,它的数据都是以文件形式存在的。
Hive中的每一条记录对应于文件中的一行,各个字段的值是被指定的分隔符分隔的。在读数据的时候,会将文件行以分隔符分隔字段值,并将各个值按顺序给字段;现有的 hive 的权限基于文件的,如果某个用户对表对应的文件有读的权限,那么用户就对表有读的权限。
当前 hive 运用最多的是分区,hive 会将各个分区的数据分别放在不同的文件夹下;
在用 hive 执行 SQL 语句时,是将语句处理成 mapreduce 程序运行的。
二.数据类型
整型 int 4 字节 smallint 2 字节 Tinyint 1 字节 bigint 8 字节
浮点数 float double
字符串 string
布尔型 boolean
不支持日期时间型
不支持二进制串
其它数据类型
ARRAY
MAP
STRUCT
create table complex( col1 ARRAY<int>, col2 Map<string,int>, col3 STRUCT<a:string, b:int, c:double> ); select col1[0],col2['b'],col3.c from complex;
三.支持各种内建函数
略...
四.DDL(数据定义)
1.创建和删除建数据库
create database if not exists db_test comment '用于测试'; drop database if exists db_test;
2.建表
create external table order_joined_extend( addr_id bigint comment 'address id' , alliance_id int , allot_quantity int , city_ship_type_desc string ) comment 'order_joined_extend' partitioned by (create_date string,type string) row format delimited fields terminated by '\001' lines terminated by '\n' stored as textfile location '/home/zhouweiping/order_joined_extend/';
external 建立外部表。
外部表的好处:
a.可以直接将数据文件放到 location 指定的目录,在 hive中即可查询出数据;
b.可以多个表使用一份数据,只需将 location 指向同一个目录;
partitioned by 建立分区表。
分区表是将分区列值一样的放到一个文件中,如果该分区列下还有子分区,会在该文件夹下再分小文件夹;如图:
row format 指定表中行列分隔符。
Stored as 文件存储的格式,此处的 textfile。
Location 指定表中数据文件存放的 hdfs 目录。该参数默认为:
/user/hive/warehouse/dbname.db/tablename
也可以用
create table table_name like old_table_name,但是这个只能建内表,不能建外表,就是加了external,所建的表任然是内表;而且在建表时如果原表是分区表,新建的表也只是一般的表,原表中的分区字段成了新表中的一般字段。
3.建表的时候可以同时插入数据
create table order_joined_extend1 comment 'order_joined_extend' row format delimited fields terminated by '\001' lines terminated by '\n' stored as textfile location '/home/zhouweiping/order_joined_extend1/' as select * from order_joined_extend;
但是这种方法不支持外部表和分区表,并且在建表时不能指定详细的列。
4. 删除表
drop table if exists order_joined_extend1;
删除的表可能是外部表或者内表,在删除外部表时只是删除了表结构,数据文件依然存在。
5. 修改表
增加删除分区
alter table order_joined_extend add partition(create_date='2012-09-01',type='ddclick_bang') location '/share/comm/ddclick/2012-09-01/ddclick_bang/'; alter table order_joined_extend drop if exists partition(create_date='2012-09-01',type='ddclick_bang');
重命名
alter table order_joined_extend rename to order_joined_extend_rename;
替换原有的列,替换时只是在分区列之前,分区列不变
ALTER TABLE order_joined_extend REPLACE COLUMNS ( product_id string, product_name string, bd_name string )
增加列,之后在分区之前的最后一列加,不能指定到某列之后
alter table order_joined_extend add columns (add_col_test string)
内部表转外部表
alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='TRUE');
外部表转内部表
alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='FALSE');
6. Show/describle
show databases; show tables; show tables '*tianzhao*';
显示表中中含有tianzhao的表名
show partitions table_name;
展示表中现有的分区
desc formatted table_name;
可以描述出很多信息,包括字段,location,分区字段,是内表或者外表等;
show functions;
显示可以用的函数列表,包括可用的udf函数。
describe function length;
返回length函数的说明
show table extended like order_joined_extend partition(create_date='2012-09-01',type='ddclick_bang');
五.DML(数据操作)
Hive 只支持 select、insert,不支持 delete、update
1.load 数据
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename[PARTITION (partcol1=val1, partcol2=val2 ...)]
Load本地数据到hive,最好指定本地文件的绝对路径
追加导入数据:
load data local inpath '/home/zhouweiping/d.dat' into table order_joined_extend1;
覆盖导入数据:
load data local inpath '/home/zhouweiping/d.dat' overwrite into table order_joined_extend1;
加载hdfs上的数据到hive表
如果是外表可以直接将数据文件拷贝到location的目录
Hadoop fs –cp from location
内表或者外表都可以用load的方法
load data inpath '/home/zhouweiping/d.dat' into table order_joined_extend1;
load 数据时:
如果数据在本地,会将本地数据复制一份到 hdfs 中表的 location;
如果是 hdfs 是的数据,会直接移动到 location;所以如果 load 数据的数据文件跟 location 相同,会报错;
2.Insert
插入数据到非分区表
Insert overwrite table table1 Select * from table2
插入数据到分区表,需要指定分区值
insert overwrite table order_joined_extend partition (create_date='2012-09-01',type='ddclick_bang') select addr_id,alliance_id,allot_quantity,city_ship_type_desc, from order_joined_extend1;
一个输入,多个输出
Insert overwrite table table1 Select * from table2 Insert overwrite table table3 Select * from table2
动态分区
set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nostrict; INSERT OVERWRITE TABLE order_joined_extend PARTITION(createdate,type) SELECT * FROM order_joined_extend1 ;
Hive将会以select的最后两列作为动态分区的值,将createdate,type相同的列插入到一个
partition中
将query的结果写入文件
写到本地文件:
insert overwrite local directory '/home/zhouweiping/directory.dat' select * from order_joined_extend limit 10;
写到hdfs:
insert overwrite directory '/home/zhouweiping/directory.dat' select * from order_joined_extend limit 10;
3.select
一般的 SQL 语句都支持
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number]
在使用聚合函数时,select 的列必须是 group by 后面的字段或者只用了聚合函数的;
4.Join
Hive 只支持等值连接(equality joins)、外连接(outer joins)和(left semi join)。Hive不支持所有非等值的连接,因为非等值连接非常难转化到 map/reduce 任务;Hive也不支持 in 子查询,但是可以用 left semi join 实现 in 操作。另外,Hive支持多于 2 个表的连接。
JOIN子句中表的顺序很重要,一般是把数据量大的表放后面。
转自:http://qingyuan-jishu.iteye.com/blog/2068536
发表评论
文章已被作者锁定,不允许评论。
-
Hadoop namenode的fsimage与editlog详解
2017-05-19 10:04 1187Namenode主要维护两个文件,一个是fsimage,一个是 ... -
Hadoop HBase建表时预分区(region)的方法学习
2017-05-15 11:18 1193如果知道Hbase数据表的key的分布情况,就可以在建表的时候 ... -
Hadoop HBase行健(rowkey)设计原则学习
2017-05-15 10:34 1126Hbase是三维有序存储的,通过rowkey(行键),colu ... -
Hadoop HBase中split原理学习
2017-05-12 13:38 2280在Hbase中split是一个很重 ... -
Hadoop HBase中Compaction原理学习
2017-05-12 10:34 999HBase Compaction策略 RegionServer ... -
Hadoop HBase性能优化学习
2017-05-12 09:15 687一、调整参数 入门级的调优可以从调整参数开始。投入小,回报快 ... -
Hadoop 分布式文件系统学习
2017-05-10 15:34 506一. 分布式文件系统 分布式文件系统,在整个分布式系统体系中处 ... -
Hadoop MapReduce处理wordcount代码分析
2017-04-28 14:25 593package org.apache.hadoop.exa ... -
Hadoop YARN完全分布式配置学习
2017-04-26 10:27 577版本及配置简介 Java: J ... -
Hadoop YARN各个组件和流程的学习
2017-04-24 19:04 651一、基本组成结构 * 集 ... -
Hadoop YARN(Yet Another Resource Negotiator)详细解析
2017-04-24 18:30 1160带有 MapReduce 的 Apache Had ... -
Hive 注意事项与扩展特性
2017-04-06 19:31 7501. 使用HIVE注意点 字符集 Hadoop和Hive都 ... -
Hive 元数据和QL基本操作学习整理
2017-04-06 14:36 1030Hive元数据库 Hive将元数据存储在RDBMS 中,一般常 ... -
Hive 文件压缩存储格式(STORED AS)
2017-04-06 09:35 2320Hive文件存储格式包括以下几类: 1.TEXTFILE ... -
Hive SQL自带函数总结
2017-04-05 19:25 1143字符串长度函数:length ... -
Hive 连接查询操作(不支持IN查询)
2017-04-05 19:16 729CREATE EXTERNAL TABLE IF NOT ... -
Hive优化学习(join ,group by,in)
2017-04-05 18:48 1818一、join优化 Join ... -
Hive 架构与基本语法(OLAP)
2017-04-05 15:16 1253Hive 是什么 Hive是建立在Hadoop上的数据仓库基础 ... -
Hadoop MapReduce操作Hbase范例学习(TableMapReduceUtil)
2017-03-24 15:37 1217Hbase里的数据量一般都 ... -
Hadoop MapReduce将HDFS文本数据导入HBase
2017-03-24 11:13 1222HBase本身提供了很多种数据导入的方式,通常有两种常用方式: ...
相关推荐
标题中提到的"Hive学习笔记-比较全的知识"和描述中所述"相当不错的,适合初学者,下载绝对不亏"意味着本篇文档旨在为...理解这些基础知识有助于更好地掌握Hive的数据处理能力,以及如何将它与Hadoop生态系统融合使用。
HIVE基础入门资料,主要目录包含Hive概述、HIve SQL基础、常见问题及规范 和HIVE SQL优化。 1、适合学习对象: 数据仓库IT人员 数据分析人员 对Hive及分布式系统有一定基础的学员 2、课程目标: 希望授课对象...
### Hive 查询语言(HQL)基础知识 Hive 是一个基于 Hadoop 的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供 SQL 类似的查询语言(Hive Query Language,简称 HQL)来处理这些数据。HQL 提供...
### Hive学习笔记(更新版) #### 一、Hive简介 Hive 是一款构建于 ...对于初学者而言,掌握这些基础知识是十分重要的,这将帮助他们在后续的学习过程中更加顺利地探索Hive的高级特性及其在大数据处理领域的应用。
了解并正确使用数据类型是编写高效Hive SQL的基础。 2.1.1 整型 Hive支持TINYINT(1字节),SMALLINT(2字节),INT(4字节)和BIGINT(8字节)四种整型数据类型。选择合适的数据类型可以有效节省存储空间。 2.1.2...
### Hive基础知识 1. **Hive简介**: - Hive是一种数据仓库工具,它被设计用于处理存储在Hadoop文件系统(HDFS)中的大量结构化数据集。 - 通过Hive,用户可以使用类似SQL的查询语言(称为HiveQL)来执行复杂的...
总的来说,这个压缩包提供的资料覆盖了Hive学习的各个方面,从基础知识到高级应用,对大数据领域的专业人士或学生都极具价值。通过系统学习这些内容,我们可以提升在大数据环境中的数据处理能力,更好地利用Hive进行...
以上内容涵盖了关于 Hive 学习的基础知识,包括其架构、与 Hadoop 和传统数据库的关系、元数据库的选择、数据存储方式以及基本操作命令等。通过深入理解这些概念和技术细节,可以帮助用户更好地掌握 Hive 的使用方法...
这本书为读者提供了全面的Hive学习资源,帮助他们掌握在大数据环境中利用Hive进行高效的数据操作。 Hadoop是Apache软件基金会开发的一个开源框架,用于存储和处理海量数据。Hive作为Hadoop的一部分,它将复杂的...
这个"hive教程资料.rar"压缩包很可能包含了一系列学习Hive的基础到高级知识的资源,比如SQL查询语句、课堂笔记以及可能的数据可视化相关材料。 首先,我们来看"课堂临时sql.sql"。这很可能是Hive SQL查询的实例集合...
### Hive编程入门课程知识点详解 #### 一、Hive概览 Hive是建立在Hadoop之上的数据仓库基础设施,由Facebook赞助开发。它通过提供SQL-like查询语言(HiveQL),使用户能够轻松地对存储在Hadoop分布式文件系统(HDFS...
【大数据系列-Hive】 Hive是Apache软件基金会下的一个数据仓库工具,主要设计...总之,Hive是大数据处理中的重要工具,它简化了对大规模数据的管理和分析,通过学习Hive的深入知识,可以更高效地处理和探索海量数据。
### Hive基础知识 **Hive** 是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,使不熟悉MapReduce的用户可以使用SQL语句快速实现简单的MapReduce统计,极大地...
通过这些基础知识,我们可以开始使用 Hive 对 Hadoop 集群上的大量数据进行高效的管理和分析。Hive 的易用性和灵活性使其在大数据处理领域广泛应用,尤其在数据仓库和报表生成等方面。随着 Hive 不断发展,更多高级...
### Hive入门知识点详解 ...以上内容概述了Hive的基础知识和常用操作,对于初学者来说是一个良好的起点。随着对Hive的深入了解,还可以学习更多高级特性,如视图、索引、自定义函数等,以满足更复杂的数据处理需求。
《Hive编程技术与应用》学习笔记主要涵盖了Hive的基础知识、工作原理、架构、数据类型、设计特点以及元数据库等内容。以下是对这些知识点的详细解释: 1. **Hive的基本内容** - **概述**:Hive是基于Hadoop的数据...