- 浏览: 599605 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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将元数据存储在RDBMS 中,一般常用的有MySQL和DERBY。
hive元数据对应的表约有20个,其中和表结构信息有关的有9张,其余的10多张或为空,或只有简单的几条记录,以下是部分主要表的简要说明。
从上面表的内容来看,hive整个创建表的过程已经比较清楚了。
1. 解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象
2. 根据解析到的信息构建对应的表、字段、分区等对象,从 SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同通过DAO方法写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。
实际上我们常见的RDBMS都是通过这种方法进行组织的,典型的如postgresql,其系统表中和hive元数据一样裸露了这些id信息(oid,cid等),而Oracle等商业化的系统则隐藏了这些具体的ID。通过这些元数据我们可以很容易的读到数据诸如创建一个表的数据字典信息,比如导出建表语名等。
1. 创建操作
1.1 创建表
1.2 基于现有的表结构创建一个新表
1.3 创建视图:
1.4 创建外部表:
1.5 建分区表:
2. 加载数据
Hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。
路径支持:
* 相对路径,例如:project/data1
* 绝对路径,例如: /user/hive/project/data1
* 包含模式的完整 URI,例如:hdfs://namenode:9000/user/hive/project/data1
2.1 从本地文件加载数据:
2.2 加载分区表数据:
3. 查看表结构
3.1 展示所有表:
3.2 显示表的结构信息
3.3 展示表中有多少分区:
3.4 显示所有函数:
3.5 查看函数用法:
3.6 查看数组、map、结构
3.7 查看hive为某个查询使用多少个MapReduce作业
3.8 查看视图详细信息:
4. 更新操作
4.1 更新表的名称:
4.2 添加、更新一列
4.3 增加、删除分区
4.4 增加表的元数据信息
4.5 改变表文件格式与组织
5. 删除操作
5.1 删除表:
5.2 删除表中数据,但要保持表的结构定义
5.3 删除视图
6. 连接操作
6.1 内连接:
6.2 外连接:
6.3 in查询:Hive不支持,但可以使用LEFT SEMI JOIN
LEFT SEMI JOIN的限制是, JOIN子句中右边的表只能在ON子句中设置过滤条件,在WHERE子句、SELECT子句或其他地方过滤都不行。
6.4 Map连接:Hive可以把较小的表放入每个Mapper的内存来执行连接操作
INSERT OVERWRITE TABLE ..SELECT:新表预先存在
CREATE TABLE … AS SELECT:新表表预先不存在
7. 插入数据
7.1 基本模式
7.2 多插入模式
7.3 自动分区模式
8. 导出数据到HDFS
数据写入文件系统时进行文本序列化,且每列用^A 来区分,\n换行
转自:http://blog.csdn.net/lnho2015/article/details/51381198
Hive将元数据存储在RDBMS 中,一般常用的有MySQL和DERBY。
hive元数据对应的表约有20个,其中和表结构信息有关的有9张,其余的10多张或为空,或只有简单的几条记录,以下是部分主要表的简要说明。
从上面表的内容来看,hive整个创建表的过程已经比较清楚了。
1. 解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象
2. 根据解析到的信息构建对应的表、字段、分区等对象,从 SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同通过DAO方法写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。
实际上我们常见的RDBMS都是通过这种方法进行组织的,典型的如postgresql,其系统表中和hive元数据一样裸露了这些id信息(oid,cid等),而Oracle等商业化的系统则隐藏了这些具体的ID。通过这些元数据我们可以很容易的读到数据诸如创建一个表的数据字典信息,比如导出建表语名等。
1. 创建操作
1.1 创建表
CREATE TABLE pokes (foo INT, bar STRING);
1.2 基于现有的表结构创建一个新表
create table new_table like records;
1.3 创建视图:
CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;
1.4 创建外部表:
CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT 'IP Address of the User', country STRING COMMENT 'country of origination') COMMENT 'This is the staging page view table' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' STORED AS TEXTFILE LOCATION '<hdfs_location>';
1.5 建分区表:
CREATE TABLE par_table(viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(date STRING, pos STRING) ROW FORMAT DELIMITED fields terminated by '\t' lines terminated by '\n'; STORED AS SEQUENCEFILE;
2. 加载数据
Hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。
路径支持:
* 相对路径,例如:project/data1
* 绝对路径,例如: /user/hive/project/data1
* 包含模式的完整 URI,例如:hdfs://namenode:9000/user/hive/project/data1
2.1 从本地文件加载数据:
LOAD DATA LOCAL INPATH '/home/hadoop/input/ncdc/micro-tab/sample.txt' OVERWRITE INTO TABLE records;
2.2 加载分区表数据:
load data local inpath '/home/hadoop/input/hive/partitions/file1' into table logs partition (dt='2001-01-01',country='GB');
3. 查看表结构
3.1 展示所有表:
SHOW TABLES; SHOW TABLES '.*s'; //按正条件(正则表达式)显示表
3.2 显示表的结构信息
DESCRIBE invites;
3.3 展示表中有多少分区:
show partitions logs;
3.4 显示所有函数:
show functions;
3.5 查看函数用法:
describe function substr;
3.6 查看数组、map、结构
select col1[0],col2['b'],col3.c from complex;
3.7 查看hive为某个查询使用多少个MapReduce作业
Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
3.8 查看视图详细信息:
DESCRIBE EXTENDED valid_records;
4. 更新操作
4.1 更新表的名称:
ALTER TABLE source RENAME TO target;
4.2 添加、更新一列
ALTER TABLE invites ADD|REPLACE COLUMNS (new_col2 INT COMMENT 'a comment');
4.3 增加、删除分区
ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ] partition_spec [ LOCATION 'location2' ] ... partition_spec: : PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...) ALTER TABLE table_name DROP partition_spec, partition_spec,...
4.4 增加表的元数据信息
ALTER TABLE table_name SET TBLPROPERTIES table_properties table_properties: :[property_name = property_value…..]
4.5 改变表文件格式与组织
ALTER TABLE table_name SET FILEFORMAT file_format ALTER TABLE table_name CLUSTERED BY(userid) SORTED BY(viewTime) INTO num_buckets BUCKETS
5. 删除操作
5.1 删除表:
DROP TABLE records;
5.2 删除表中数据,但要保持表的结构定义
dfs -rmr /user/hive/warehouse/records;
5.3 删除视图
DROP VIEW view_name
6. 连接操作
6.1 内连接:
SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
6.2 外连接:
SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id); SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id); SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);
6.3 in查询:Hive不支持,但可以使用LEFT SEMI JOIN
SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);
LEFT SEMI JOIN的限制是, JOIN子句中右边的表只能在ON子句中设置过滤条件,在WHERE子句、SELECT子句或其他地方过滤都不行。
6.4 Map连接:Hive可以把较小的表放入每个Mapper的内存来执行连接操作
SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
INSERT OVERWRITE TABLE ..SELECT:新表预先存在
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:新表表预先不存在
CREATE TABLE target AS SELECT col1,col2 FROM source;
7. 插入数据
7.1 基本模式
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement
7.2 多插入模式
FROM from_statement INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 [INSERT OVERWRITE TABLE tablename2 [PARTITION ...] select_statement2] ...
7.3 自动分区模式
INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement
8. 导出数据到HDFS
数据写入文件系统时进行文本序列化,且每列用^A 来区分,\n换行
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ... FROM from_statement INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1 [INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2]
转自:http://blog.csdn.net/lnho2015/article/details/51381198
发表评论
文章已被作者锁定,不允许评论。
-
Hadoop namenode的fsimage与editlog详解
2017-05-19 10:04 1188Namenode主要维护两个文件,一个是fsimage,一个是 ... -
Hadoop HBase建表时预分区(region)的方法学习
2017-05-15 11:18 1194如果知道Hbase数据表的key的分布情况,就可以在建表的时候 ... -
Hadoop HBase行健(rowkey)设计原则学习
2017-05-15 10:34 1127Hbase是三维有序存储的,通过rowkey(行键),colu ... -
Hadoop HBase中split原理学习
2017-05-12 13:38 2281在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 507一. 分布式文件系统 分布式文件系统,在整个分布式系统体系中处 ... -
Hadoop MapReduce处理wordcount代码分析
2017-04-28 14:25 594package org.apache.hadoop.exa ... -
Hadoop YARN完全分布式配置学习
2017-04-26 10:27 578版本及配置简介 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 7511. 使用HIVE注意点 字符集 Hadoop和Hive都 ... -
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 基础知识学习(语法)
2017-04-05 15:51 904一.Hive 简介 Hive是基于 Hadoop 分布式文件 ... -
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操作的核心部分,它包含了数据库、表、列、分区等信息,这些信息用于定义数据的结构和组织方式。本资源“hive元数据生成建表语句”主要关注如何从已有的Hive元数据中自动生成创建表的SQL语句,以...
Hive 元数据库操作是 Hive 运维中常用的操作之一,它提供了对元数据的管理和查询功能。在 Hive 中,元数据是指对数据的描述信息,如表名、表路径、分区信息、列信息等。下面将对 Hive 元数据库操作的常用 SQL 语句...
Hive.sql
Hive的元数据是其核心组成部分,它包含了表、分区、列等信息,使得Hive能够正确地组织和查询数据。通常,Hive元数据默认存储在MySQL或Derby等关系型数据库中。然而,为了适应更复杂的业务需求和更高的性能,我们可以...
### Hive配置(Oracle数据库为元数据) #### 一、概述 ...通过以上步骤,Hive 将能够使用 Oracle 数据库作为其元数据存储,并且具备了基本的日志记录能力。后续可根据实际需求进一步调整配置或扩展功能。
《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...
Hive元数据导入SQL生成工具是针对CDH4.7.0版本设计的一款实用软件,主要用于帮助用户方便地管理和操作Hive中的元数据。Hive是一个分布式数据仓库系统,它允许用户使用类SQL语言(HQL)来处理存储在Hadoop集群上的大...
学习者需要掌握不同数据类型的操作,理解Hive的数据存储机制,如TextFile、SequenceFile、Orc和Parquet等。 4. **Hive数据定义**:讲解如何创建、查询、修改和删除数据库及表,包括分区表和桶表的创建。学生将学会...
在大数据处理领域,Hive是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...
通过这次实验,学生能够深入理解Hive作为数据仓库工具的作用,熟悉其基本操作和使用场景,同时也掌握了自定义函数的开发流程,这对于进一步学习大数据处理和分析具有重要意义。在实际工作中,Hive的性能优化和与其他...
【描述】:该文档是一份针对Hive的学习资料,旨在引导读者理解如何在Hadoop平台上利用Hive进行数据仓库操作和编程实践。它涵盖了Hive的基本概念、安装步骤、实验环境以及HiveQL的基本操作。 【知识点详解】: 1. *...
通过这些操作,我们可以熟练掌握HiveQL的基本语法,如CREATE TABLE、LOAD DATA、INSERT INTO、SELECT等,以及如何利用Hive进行数据分区和复杂查询。此外,实验也强调了Hive在大数据分析中的实用性,特别是在处理大量...
Hive基本操作命令大全 Hive是一个基于Hadoop的数据仓库工具,可以使用SQL语言来查询和管理大规模数据。本文档将详细介绍Hive的基本操作命令,从创建表、加载数据、查询数据到数据管理等方面进行整理。 创建表 ...
1.hive元数据信息的查看,包括表基本信息,数据库基本信息,字段信息,分区信息,索引信息等; 2.对hive元数据的检索,包括表、字段、数据库等内容的检索 3.元数据信息更新(目前只提供对库、表、字段的描述信息进行...
hive 基本操作的命令和hive 实用命令等,有利与学习hive和mysql
本文档是关于Hive学习笔记的整理,涵盖了Hive的架构、Hive和Hadoop的关系、Hive和普通关系数据库的异同、Hive的元数据库、Hive数据存储、Hive的基本操作等知识点。 1. HIVE结构 Hive的架构主要包括三个部分:用户...
Hive的元数据对于理解和操作Hive至关重要,主要包括以下内容: - **表的名称** - **列的信息** - **分区的属性** - **表的类型(内部表或外部表)** - **数据存储的位置** 由于Hive元数据需要频繁地更新和修改,...
本文档主要介绍了Hive的基本概念、应用场景、元数据存储方式、数据导入和导出方式等。下面是对文档中提到的知识点的详细解释: 一、Hive概述 Hive是一个构建在HDFS和Map/Reduce之上的可扩展的数据仓库。它提供了...
在本教程中,我们将深入探讨如何使用Java JDBC连接到Hive数据库,并执行基本的数据操作。Hive是一个基于Hadoop的数据仓库工具,它允许我们对大规模数据集进行SQL-like查询。 首先,我们需要在Java项目中引入Hive ...
基于 Hive 的数据分析案例 -MM 聊天软件数据分析 本资源摘要信息主要介绍了基于 Hive 的数据分析案例,通过对 MM 聊天软件的数据进行统计分析,了解用户行为,实现精准的用户画像,并为公司的发展决策提供精确的...