HIVE从入门到精通
Hive入门

Hive⼊门第⼀章 Hive 基本概念1.1 什么是 HiveApache Hive是⼀款建⽴在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop⽂件中的结构化、半结构化数据⽂件映射为⼀张数据库表,基于表提供了⼀种类似SQL的查询模型,称为Hive查询语⾔(HQL),⽤于访问和分析存储在Hadoop⽂件中的⼤型数据集。
Hive核⼼是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执⾏。
Hive由Facebook实现并开源。
1.2 为什么使⽤Hive使⽤Hadoop MapReduce直接处理数据所⾯临的问题⼈员学习成本太⾼需要掌握java语⾔MapReduce实现复杂查询逻辑开发难度太⼤使⽤Hive处理数据的好处操作接⼝采⽤类SQL语法,提供快速开发的能⼒(简单、容易上⼿)避免直接写MapReduce,减少开发⼈员的学习成本⽀持⾃定义函数,功能扩展很⽅便背靠Hadoop,擅长存储分析海量数据集1.3 Hive与Hadoop的关系从功能来说,数据仓库软件,⾄少需要具备下述两种能⼒:存储数据的能⼒分析数据的能⼒Apache Hive作为⼀款⼤数据时代的数据仓库软件,当然也具备上述两种能⼒。
只不过Hive并不是⾃⼰实现了上述两种能⼒,⽽是借助Hadoop。
Hive利⽤HDFS存储数据,利⽤MapReduce查询分析数据。
这样突然发现Hive没啥⽤,不过是套壳Hadoop罢了。
其实不然,Hive的最⼤的魅⼒在于⽤户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析。
1.4 Hive与MysqlHive虽然具有RDBMS数据库的外表,包括数据模型、SQL语法都⼗分相似,但应⽤场景却完全不同。
Hive只适合⽤来做海量数据的离线分析。
Hive的定位是数据仓库,⾯向分析的OLAP系统。
因此时刻告诉⾃⼰,Hive不是⼤型数据库,也不是要取代Mysql承担业务数据处理。
Hive(二)hive的基本操作

Hive(⼆)hive的基本操作⼀、DDL操作(定义操作)1、创建表(1)建表语法结构CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...)] //字段注释[COMMENT table_comment] //表的注释[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] //分区,前⾯没有出现的字段[CLUSTERED BY (col_name, col_name, ...) //分桶,前⾯出现的字段[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS][ROW FORMAT row_format][STORED AS file_format][LOCATION hdfs_path]分区:不⽤关注数据的具体类型,放⼊每⼀个分区⾥;分桶:调⽤哈希函数取模的⽅式进⾏分桶(2)建表语句相关解释create table:创建⼀个指定名字的表。
如果相同名字的表已经存在,则抛出异常;⽤户可以⽤ IF NOT EXISTS 选项来忽略这个异常。
external :关键字可以让⽤户创建⼀个外部表,在建表的同时指定⼀个指向实际数据的路径( LOCATION), Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
在删除表的时候,内部表的元数据和数据会被⼀起删除,⽽外部表只删除元数据,不删除数据。
(经典⾯试问题)partitioned :在 Hive Select 查询中⼀般会扫描整个表内容,会消耗很多时间做没必要的⼯作。
有时候只需要扫描表中关⼼的⼀部分数据,因此建表时引⼊了 partition 概念。
hive的基础知识

hive的基础知识什么是Hive?Hive是一个开源数据仓库工具,用于处理大规模结构化和半结构化数据。
它构建在Apache Hadoop之上,利用Hadoop的分布式文件系统HDFS和分布式计算框架MapReduce进行数据处理。
为什么使用Hive?Hive的设计目标是使非程序员也能够轻松地通过SQL语句来查询和分析大规模数据。
与传统的关系型数据库不同,Hive使用HQL (Hive Query Language)作为查询语言,这是一种基于SQL的扩展语言,允许用户以熟悉的SQL语法来查询大规模数据集。
Hive的架构是怎样的?Hive的架构由三个主要组件组成:Metastore、Driver和Execution Engine。
1. Metastore:存储了表的元数据信息,包括表的模式、分区、存储位置等。
Metastore可以与多个Hive实例共享,以便不同用户可以访问同一组数据。
2. Driver:接收用户的HQL查询并解析它们,将它们转换为一系列的MapReduce任务并交给Execution Engine执行。
3. Execution Engine:根据Driver传递的查询计划启动一系列的MapReduce任务,并将结果返回给用户。
如何创建表?在Hive中,我们可以使用HQL语句来创建表。
首先通过`CREATEDATABASE`语句创建数据库,然后使用`USE DATABASE`语句将其设置为当前数据库。
接下来,使用`CREATE TABLE`语句创建表,并指定表名、列名和列的数据类型。
例如,以下HQL语句创建了一个名为"employees"的表,该表有三列:id(整数类型)、name(字符串类型)和salary(浮点数类型)。
sqlCREATE DATABASE mydatabase;USE DATABASE mydatabase;CREATE TABLE employees(id INT,name STRING,salary FLOAT);如何向表中插入数据?一旦创建了表,我们可以使用`INSERT INTO`语句将数据插入表中。
大讲台筛选,Hive从概念到安装使用总结

大讲台筛选,Hive从概念到安装使用总结一、Hive的基本概念1.1 hive是什么?(1)Hive是建立在hadoop数据仓库基础之上的一个基础架构;(2)相当于hadoop之上的一个客户端,可以用来存储、查询和分析存储在hadoop中的数据;(3)是一种SQL解析引擎,能够将SQL转换成Map/Reduce中的Job在hadoop上执行。
1.2 hive的数据存储特点(1)数据存储是基于hadoop的HDFS;(2)没有专门的数据存储格式;(3)存储结构主要有:数据库、文件(默认可以直接加载文本文件)、表、视图、索引;说明:hive中的表实质就是HDFS的目录,按表名将文件夹分开,若是分区表,则分区值是子文件夹。
这些数据可以直接在M/R中使用。
大讲台,混合式自适应IT职业教育开创者。
hive中的数据是存放在HDFS中的。
二、hive的系统结构存储hive的元数据(表及表的属性、数据库名字等)分析执行hive QL语句,将执行计划投递给hadoop,转到map/reduce执行2.1 hive的系统结构– metastore存储方式默认情况,元数据使用内嵌的derby数据库作为存储引擎将存储数据独立出来,支持多用户同时访问将metastore独立出来,远程方法调用三、hive的安装与使用3.1下载hive源文件,解压hive文件进入$HIVE_HOME/conf/修改文件修改$HIVE_HOME/bin的hive-env.sh,增加以下三行生效文件:3.2 配置MySQL的metastore修改$HIVE_HOME/conf/hive-site.xml3.3hive临时目录的配置,大讲台,混合式自适应IT职业教育开创者。
修改$HIVE_HOME/conf/hive-site.xml(1)设定数据目录(2)设定临时文件目录(3)hive相关日志的目录3.4hive的运行模式的指定Hive的运行模式即任务的执行环境,分为本地与集群两种,我们可以通过mapred.job.tracke r 来指明本地模式设置方式:3.5 sqoop的安装(1)下载、解压:(2)配置sqoop:(3)测试连接数据库并列出数据库:(4)将mysql中的表导入到hive中:3.6 hive的命令行方式1、输入#/hive/bin/hive执行应用程序,或者查看并修改表与目录之间的关系修改参数:hive.metastore.warehouse.dir 表与目录的对应关系3.6 命令行方式显示或修改参数值在代码中大讲台,混合式自适应IT职业教育开创者。
hive遵循的标准

hive遵循的标准# 在大数据生态系统中使用Hive进行数据分析大数据时代的到来,为数据分析提供了更多的机会和挑战。
在众多的大数据工具中,Hive是一个基于Hadoop的数据仓库工具,被广泛应用于数据存储、管理和分析。
本文将介绍Hive的基本概念、使用方法和优势,以及在数据分析中如何使用Hive进行常见的数据操作和查询。
## 1. Hive的基本概念和使用方法Hive是一个开源的数据仓库工具,它提供了类似于SQL的查询语言(称为HiveQL),使得数据分析师可以使用熟悉的SQL语法进行数据查询和分析。
Hive 底层基于Hadoop的分布式文件系统(HDFS),将数据存储在分布式环境中,支持海量数据的处理和存储。
使用Hive主要涉及以下几个概念:- 表(Table):Hive中的数据存储单位,类似于关系数据库中的表,具有字段和记录。
- 分区(Partition):表中的分区,可以根据某个字段对数据进行分组存储,提高查询效率。
- 分区表(Partitioned Table):根据分区字段划分的表,可以根据分区字段进行数据查询和分析。
- 外部表(External Table):在Hive中定义的表,实际数据存储在外部文件系统中,如HDFS或S3。
- HiveQL:Hive提供的查询语言,类似于SQL,可以进行数据查询、过滤、聚合等操作。
使用Hive进行数据分析的基本步骤如下:1. 创建表:使用HiveQL创建表,定义表的字段类型和分区。
2. 加载数据:将数据加载到Hive表中,可以使用LOAD DATA命令或INSERT INTO SELECT语句。
3. 数据查询:使用HiveQL进行数据查询和分析,可以进行数据过滤、排序、聚合等操作。
4. 数据导出:将查询结果导出到文件或其他存储系统中,如HDFS、HBase等。
## 2. Hive在数据分析中的优势Hive具有以下几个在数据分析中的优势:- 灵活查询语言:HiveQL类似于SQL语法,熟悉SQL的数据分析师可以快速上手,并利用已有的SQL技能进行数据查询和分析。
第三章hive表操作(一)

详细显示
格式化显示
Hive 编程
Hive 编程
3. 创建表时加入分隔符
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name [(col_name data_type, ... )]
[ROW FORMAT row_format] [STORED AS file_format] ……
显示数据库的属性
例4. 显示myhive1数据库的数据信息
Hive 编程
在MySQL中显示数据库的属性:
Hive 编程
3. 修改数据库—Alter Database
Hive 编程
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;
布尔类型,true/false 字符串,可以指定字符集
时间戳
时间
示例
1 1 1 1 1.0 1.0 true “xmu” 1327882394(Unix新纪元 秒) 2019-05-06
TIMESTAM:偏移量,与时区无关 DATE:不包括时间
Hive 编程
2. 复杂数据类型
Hive 编程
类型
描述
ARRAY 一组有序字段,字段的类型必须相同
示例 Array(1,2)
Hive入门教程

Hive⼊门教程Hive 安装相⽐起很多教程先介绍概念,我喜欢先动⼿装上,然后⽤例⼦来介绍概念。
我们先来安装⼀下HiveHive是什么Hive 提供了⼀个让⼤家可以使⽤sql去查询数据的途径。
但是最好不要拿Hive进⾏实时的查询。
因为Hive的实现原理是把sql语句转化为多个Map Reduce任务所以Hive⾮常慢,官⽅⽂档说Hive 适⽤于⾼延时性的场景⽽且很费资源。
举个简单的例⼦,可以像这样去查询hive> select * from h_employee;OK11 peter22 paulTime taken: 9.289 seconds, Fetched: 2 row(s)这个h_employee不⼀定是⼀个表metastoreHive 中建⽴的表都叫metastore表。
这些表并不真实的存储数据,⽽是定义真实数据跟hive之间的映射,就像传统数据库中表的meta信息,所以叫做metastore。
实际存储的时候可以定义的存储模式有四种:内部表(默认)分区表桶表外部表举个例⼦,这是⼀个简历内部表的语句CREATE TABLE worker(id INT, name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054';这个语句的意思是建⽴⼀个worker的内部表,内部表是默认的类型,所以不⽤写存储的模式。
并且使⽤逗号作为分隔符存储建表语句⽀持的类型基本数据类型tinyint / smalint / int /bigintfloat / doublebooleanstring复杂数据类型Array/Map/Struct没有date /datetime建完的表存在哪⾥呢?在 /user/hive/warehouse ⾥⾯,可以通过hdfs来查看建完的表位置$ hdfs dfs -ls /user/hive/warehouseFound 11 itemsdrwxrwxrwt - root supergroup 02014-12-0214:42 /user/hive/warehouse/h_employeedrwxrwxrwt - root supergroup 02014-12-0214:42 /user/hive/warehouse/h_employee2drwxrwxrwt - wlsuser supergroup 02014-12-0417:21 /user/hive/warehouse/h_employee_exportdrwxrwxrwt - root supergroup 02014-08-1809:20 /user/hive/warehouse/h_http_access_logsdrwxrwxrwt - root supergroup 02014-06-3010:15 /user/hive/warehouse/hbase_apache_access_logdrwxrwxrwt - username supergroup 02014-06-2717:48 /user/hive/warehouse/hbase_table_1drwxrwxrwt - username supergroup 02014-06-3009:21 /user/hive/warehouse/hbase_table_2drwxrwxrwt - username supergroup 02014-06-3009:43 /user/hive/warehouse/hive_apache_accesslogdrwxrwxrwt - root supergroup 02014-12-0215:12 /user/hive/warehouse/hive_employee⼀个⽂件夹对应⼀个metastore表Hive 各种类型表使⽤CREATE TABLE workers( id INT, name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054';通过这样的语句就建⽴了⼀个内部表叫 workers,并且分隔符是逗号, \054 是ASCII 码我们可以通过 show tables; 来看看有多少表,其实hive的很多语句是模仿的,当你们不知道语句的时候,把mysql的语句拿来基本可以⽤。
HIVE从入门到精通

HIVE从入门到精通目录HIVE介绍 (2)二、hive的安装和配置 (8)三、hive与hbase集成 (13)四、HIVE创建目录和表 (16)六、HIVE查询 (23)七、HIVE视图 (29)八、索引 (30)九、hive schema (30)十、Hive join (33)十一、Hive基本语法 (37)十二、Hive操作语句 (40)十三、数据操作语句 (50)Hive 优化 (56)HIVE介绍主要介绍背景及体系结构1背景应用于工业的商务智能收集分析所需的数据集正在大量增长,使得传统的数据仓库解决方案变得过于昂贵。
Hadoop 是一个流行的开源map-reduce实现,用于像yahoo, Facebook一类的公司。
来存储和处理商用硬件上的大范围数据集。
然而map-reduce程序模型还是处于很低级别,即需要开发者来书写客户程序,这些程序往往难于维护与重用。
用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的hql查询。
hive也叫做数据仓库。
2定义Hive是基于Hadoop(HDFS, MapReduce)的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
本质是将SQL转换为MapReduce程序。
3体系结构Hive本身建立在Hadoop的体系结构上,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行。
并按照该计划生成MapReduce任务后交给Hadoop集群处理,Hive的体系结构如图1-1所示:图1-1 Hive的体系结构4Hive的数据存储Hive的存储是建立在Hadoop文件系统之上的。
Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HIVE从入门到精通目录HIVE介绍 (2)二、hive的安装和配置 (8)三、hive与hbase集成 (13)四、HIVE创建目录和表 (16)六、HIVE查询 (23)七、HIVE视图 (29)八、索引 (30)九、hive schema (30)十、Hive join (33)十一、Hive基本语法 (37)十二、Hive操作语句 (40)十三、数据操作语句 (50)Hive 优化 (56)HIVE介绍主要介绍背景及体系结构1背景应用于工业的商务智能收集分析所需的数据集正在大量增长,使得传统的数据仓库解决方案变得过于昂贵。
Hadoop 是一个流行的开源map-reduce实现,用于像yahoo, Facebook一类的公司。
来存储和处理商用硬件上的大范围数据集。
然而map-reduce程序模型还是处于很低级别,即需要开发者来书写客户程序,这些程序往往难于维护与重用。
用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的hql查询。
hive也叫做数据仓库。
2定义Hive是基于Hadoop(HDFS, MapReduce)的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
本质是将SQL转换为MapReduce程序。
3体系结构Hive本身建立在Hadoop的体系结构上,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行。
并按照该计划生成MapReduce任务后交给Hadoop集群处理,Hive的体系结构如图1-1所示:图1-1 Hive的体系结构4Hive的数据存储Hive的存储是建立在Hadoop文件系统之上的。
Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据了。
Hive中主要包含四类数据模型:表(Table)、外部表(External Table)、分区(Partition)和桶(Bucket)。
Hive中的表和数据库中的表在概念上是类似的,每个表在Hive中都有一个对应的存储目录。
例如一个表pokes在HDFS中的路径为/warehouse/pokes,其中/warehouse是hive-site.xml配置文件中由${hive.metastore.warehouse.dir}指定的数据仓库的目录。
Hive中每个分区都对应数据库中相应分区列的一个索引,但是分区的组织方式和传统关系型数据库不同。
在Hive中,表中的一个分区对应表下的一个目录,所有分区的数据都存储在对应的目录中。
例如,图1-2中htable表中包含year、month和day三个分区,分别对应三个目录:对于year=2012,month=01,day=01的HDFS子目录为:/warehouse/htable/year=2012/ month=01/ day=01;对于year=2012,month=02,day=14的HDFS子目录为:/warehouse/htable/year=2012/ month=02/ day=14;桶对指定列进行哈希计算时,根据哈希值切分数据,每个桶对应一个文件。
例如,将图1-2中htable表中属性列Uniqueid列分散到32个桶中,首先要对Uniqueid进行hash计算,对应哈希值为0的桶写入HDFS的目录为:/warehouse/htable/year=2012/ month=01/day=01/part-0;对应哈希值为1的桶写入HDFS的目录为:/warehouse/htable/year=2012/ month=01/ day=01/part-1。
图1-2 Hive数据存储一、hive功能简介功能简介PARTITIONED BY关键字为表格分区4.通过CLUSTERED BY关键字将PATITION划分成BUCKET5.定义每条记录的存储格式,包括:字段之间如何分隔;集合字段中的元素如何分隔;Map的key值如何分隔6.指定存储格式为Hadoop的SequenceFile(2)查看表结构DESCRIBE tablename;(3)修改表格为表格添加字段ALTER TABLE pokes ADD COLUMNS (new_col INT);(4)删除表格DROP TABLE tablename;DML(1)、导入数据导入操作,只是将文件复制到对应的表格目录中,并不会对文档的schema进行校验从HDFS导入LOAD DATA INPATH 'data.txt' INTO TABLE page_view PARTITION(date='2008-06-08',country='US')从本地导入,并覆盖原数据LOAD DATA LOCAL INPATH 'data.txt' OVERWRITE INTO TABLE page_view PARTITION(date='2008-06-08', country='US')Hive体系结构hiveserverhiveserver启动方式:hive --service hiveserverHiveServer支持多种连接方式:Thrift、JDBC、ODBCmetastoremetastore用来存储hive的元数据信息(表格、数据库定义等),默认情况下是和hive绑定的,部署在同一个JVM中,将元数据存储到Derby中这种方式不好的一点是没有办法为一个Hive开启多个实例(Derby在多个服务实例之间没有办法共享)Hive提供了增强配置,可将数据库替换成MySql等关系数据库,将存储数据独立出来在多个服务实例之间共享甚至还可以将metastore Service也独立出来,部署到其他JVM中去,在通过远程调用的方式去访问metastore的常用配置:hive.metastore.warehouse.dir 存储表格数据的目录hive.metastore.local 使用内嵌的metastore服务(默认为true)hive.metastore.uris 如果不使用内嵌的metastore服务,需指定远端服务的urijavax.jdo.option.ConnectionURL 所使用数据库的urljavax.jdo.option.ConnectionDriverName 数据库驱动类javax.jdo.option.ConnectionUserName 连接用户名javax.jdo.option.ConnectionPassword 连接密码hive数据存储格式定义表格时如不指定Row Format和Stored As从句,hive采用如下默认配置:CREATE TABLE ...ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\001'COLLECTION ITEMS TERMINATED BY '\002'MAP KEYS TERMINATED BY '\003'LINES TERMINATED BY '\n'STORED AS TEXTFILE;默认为纯文本文件TEXTFILE如果存储的数据不是纯文本,而包含二进制的数据,可用SequenceFile和RCFile RCFile:基于列存储,类似于HBase,查询Table时,如果要检索的数据不是整条记录,而是具体的column,RCFile较比SequenceFile高效一些,只需遍历指定column对应的数据文件即可使用RCFile,创建Table时使用如下语法:CREATE TABLE ...ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' STORED AS RCFILE;除此之外,Hive还可通过正则表达式的方式指定输入数据源的格式:CREATE TABLE stations (usaf STRING, wban STRING, name STRING)ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'WITH SERDEPROPERTIES ("input.regex" = "(\\d{6}) (\\d{5}) (.{29}) .*");参考资料:/archives/595https:///confluence/display/Hive/Homehadoop权威指南二、hive的安装和配置详细步骤1. downloadwget .au/pub/apache//hive/stable/hive-0.8.1.tar.gztar zxf hive-0.8.1.tar.gz只需要在一个节点上安装2. 设置环境变量vi .bash_profileexport JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre export HADOOP_HOME=/home/hadoop/hadoop-1.0.0export HIVE_HOME=/home/hadoop/hive-0.8.1export HADOOP_CONF_DIR=$HOME/confexport HIVE_CONF_DIR=$HOME/hive-confexportCLASSPATH=$HIVE_HOME/lib:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HO MEexportPATH=$HIVE_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:/sbin/:/bin:$PATH3. 配置hivecp -r hive-0.8.1/conf $HIVE_CONF_DIR/cd $HIVE_CONF_DIR/cp hive-default.xml.template hive-default.xmlcat hive-env.shexport HADOOP_HEAPSIZE=512export HIVE_CONF_DIR=/home/hadoop/hive-conf3. 测试$ hivehive> show tables;OKTime taken: 4.824 secondshive> create table hwz(id int, name string);OKTime taken: 0.566 secondshive> select * from hwz;OKTime taken: 0.361 seconds$ hadoop dfs -lsr /user/hiveWarning: $HADOOP_HOME is deprecated.drwxr-xr-x - hadoop supergroup 0 2012-03-22 12:36/user/hive/warehousedrwxr-xr-x - hadoop supergroup 0 2012-03-22 12:36/user/hive/warehouse/hwz4. 配置Metastore用mysql数据库,这样才可以多用户同时访问a. create user and database for hive in mysqlcreate database hive;GRANT all ON hive.* TO hive@'%' IDENTIFIED BY 'hivepass';b. change metastore to use mysqlcat hive-site.xml<configuration><property><name>hive.metastore.local</name><value>true</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://slave1:3306/hive?createDatabaseIfNotExist=true</v alue></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hivepass</value></property></configuration>c. 检查$ hivehive> use dw2;OKTime taken: 3.43 secondshive> create table hwz2(id int, name string ) row format delimited FIELDS TERMINATED BY ',';OKTime taken: 2.519 secondshive> show tables;OKhwz2Time taken: 0.419 secondshive> load data local inpath 'demo.txt' overwrite into table hwz2; Copying data from file:/home/hadoop/demo.txtCopying file: file:/home/hadoop/demo.txtLoading data to table dw2.hwz2Deleted hdfs://master:9000/user/hive/warehouse/dw2.db/hwz2OKTime taken: 0.557 secondshive> select * from hwz2;OK12 jack12 jack12 jack12 jack12 jack12 jack12 jack12 jack$ hadoop dfs -lsr /user/hiveWarning: $HADOOP_HOME is deprecated.drwxr-xr-x - hadoop supergroup 0 2012-03-22 15:36/user/hive/warehousedrwxr-xr-x - hadoop supergroup 0 2012-03-22 15:48/user/hive/warehouse/dw2.dbdrwxr-xr-x - hadoop supergroup 0 2012-03-22 15:48/user/hive/warehouse/dw2.db/hwz2-rw-r--r-- 2 hadoop supergroup 1201 2012-03-22 15:48/user/hive/warehouse/dw2.db/hwz2/demo.txtdrwxr-xr-x - hadoop supergroup 0 2012-03-22 12:36/user/hive/warehouse/hwzdrwxr-xr-x - hadoop supergroup 0 2012-03-22 15:36/user/hive/warehouse/hwz2-rw-r--r-- 2 hadoop supergroup 1201 2012-03-22 15:36/user/hive/warehouse/hwz2/demo.txt$ hadoop dfs -cat /user/hive/warehouse/dw2.db/hwz2/demo.txt |head Warning: $HADOOP_HOME is deprecated.12,jack12,jack12,jack12,jack12,jack12,jack12,jack12,jack12,jack12,jackd. 在mysql中验证建立的新表mysql> use hive;Database changedmysql> show tables;+-----------------+| Tables_in_hive |+-----------------+| BUCKETING_COLS || CDS || COLUMNS_V2 || DATABASE_PARAMS || DBS || PARTITION_KEYS || SDS || SD_PARAMS || SEQUENCE_TABLE || SERDES || SERDE_PARAMS || SORT_COLS || TABLE_PARAMS || TBLS |+-----------------+14 rows in set (0.00 sec)9. 常见错误error 1:-------------------------------------------------hive> show tables;FAILED: Error in metadata: javax.jdo.JDOFatalInternalException: Error creating transactional connection factorySolution:Hive不带mysql JDBC驱动,自己安装:wget /get/Downloads/Connector-J/mysql-connector-java-5.1.18.tar.gz/from//tar zxf mysql-connector-java-5.1.18.tar.gzcd mysql-connector-java-5.1.18cp mysql-connector*.jar $HIVE_HOME/liberror 2:-------------------------------------------------hive> show tables;FAILED: Error in metadata: javax.jdo.JDOException: Couldnt obtain a new sequence (unique id) : Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.Solution:在mysql中设置 binlog_format='MIXED'三、hive与hbase集成详细步骤一、简介Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。