转载自:YBCarry
tar -zxvf .tar.gz -C 目标目录
mv apache-hive-1.2.2-bin/ hive-1.2.2
进入hive-1.2.2/conf路径,重命名配置文件:
mv hive-env.sh.template hive-env.sh
修改hive-env.sh信息:
vi hive-env.sh
# Set HADOOP_HOME to point to a specific hadoop install directory
# 指定Hadoop安装路径
HADOOP_HOME=Hadoop安装路径
# Hive Configuration Directory can be controlled by:
# 指定Hive配置文件夹
export HIVE_CONF_DIR=/XXXXXX/hive-1.2.2/conf
vi /etc/profile
export HIVE_HOME=hive安装路径
export PATH=$PATH:$HIVE_HOME/bin
# Hadoop环境加入Hive依赖
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
source /etc/profile
hive
quit;
vi hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://主机名:3306/metastore?createDatabaseIfNotExist=true
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
密码
password to use against metastore database
# 查询表时显示表头信息
hive.cli.print.header
true
# 显示当前所在的数据库
hive.cli.print.current.db
true
hive
show databases;
create database 数据库名;
create database if not exists 数据库名;
create database 数据库名 location '路径';
create [external] table [if not exists] 表名(参数) [partitioned by(字段信息)] [clustered by(字段信息)] [sorted by(字段信息)]
row format ---根据行格式化
delimited fields ---分割字段
terminated by '切割符'; ---分割依据
desc formatted 表名;
Table Type:
MANAGED_TABLE——内部表
EXTERNAL_TABLE——外部表
**区别:**管理表删除时hdfs中数据删除,外部表删除时hdfs中数据不删除
普通表查询:
select * from 表名;
指定列查询:
select 表名.列1, 表名.列2 from 表名;
指定列查询设置别名
select 表名.列 (as) 列别名 from 列原名;
分区表查询:
select * from 表名;
**注意:**此时查看的是整个分区表中的数据
select * from 表名 where 分区条件;
**注意:**此时查看的是指定分区中的数据
select * from 表名1 where 分区条件 union select * from 表名1 where 分区条件;
select count(1) from 表名;
select max(列名) from 表名;
select min(列名) from 表名;
select sum(列名) from 表名;
select avg(列名) from 表名;
select * from 表名 limit n;
where——过滤:
select * from 表名 where A>n and A
select * from 表名 where Am;
select * from 表名 where A not in(n,m);
like——模糊查询(使用通配符):`
select * from 表名 where A like 'n%';
select * from 表名 where A like '_n%';
select * from 表名 where A like '%n%';
group by——分组:
select A,B from 表名 group by B;
Join操作:
排序:
Order By(全局排序):
select * from 表名 order by 列名 asc;
select * from 表名 order by 列名 desc;
Sort By(内部排序):
set mapreduce.job.reduces = n;
select * from 表名 sort by 列名;
select * from 表名 sort by 列名 desc;
Distribute By:
Cluster By:
select * from 表名 cluster by A;
select * from 表名 distribute by A sort by A;
上述两语句等价
alter table 表名 add partition(新分区信息);
show partitions 表名;
alter table 表名 drop partition(分区信息);
msck repair table dept_partitions;
clustered by(字段信息) into n buckets
set hive.enforce.bucketing = true; set mapreduce.job.reduces = -1;
select * from 表名(bucket n out of a on A);
desc database 数据库名;
alter database 数据库名 set dbproperties('key'='value');
desc database extended 数据库名;
show databases like 'i*';
drop database 数据库名;
drop database if exists 数据库名;
drop database 数据库名 cascade;
drop database if exists 数据库名 cascade;
insert into table 表名 partition(分区信息) values(数据内容);
insert overwrite table 表名 partition(分区信息) select * from 表名 where 查询条件;
create table if not exists 表名 as select * from 表名 where 查询条件;
create table 表名(参数) row fromat delimited fields terminated by '切割符' locatition '';
**注意:**locatition路径是hdfs文件的上一层文件夹,且文件夹内只有这一个文件。
insert overwrite local directory '本地路径' select * from 表名;
export table 表名 to 'hdfs路径';
import table 表名 from 'hive路径';
truncate table 表名;
hive -e "Hive-DDL语句(注意分号)"
hive -f sql路径
查看hdfs文件:
dfs -ls 路径;
查看hdfs文件内容:
dfs -cat 文件路径;
创建hdfs目录:
dfs -mkdir -p 目录路径;
上传hdfs文件:
dfs -put 文件路径 目录路径;
cat ~/.hivehistory
UDF:一进一出
UDAF:聚合函数,多进一出 e.g. count /max/avg
UDTF:一进多出
show functions;
desc function extended 函数名;
临时添加:
add jar jar包路径;
create temporary function 别名 as "java函数类";
注册永久:
hive.aux.jars.path
file://文件夹路径
set hive.exec.compress.intermediate = true;
set mapreduce.map.output.compress = true;
set mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
set hive.exec.compress.output= true;
set mapreduce.output.fileoutputformat.compress = true;
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.output.fileoutputformat.compress.type = BLOCK;
server端配置文件:
hive.metastore.warehouse.dir
/opt/module/hive-1.2.2/warehouse
javax.jdo.option.ConnectionURL
# MySQL数据库位置 jdbc:mysql://bigdata01:3306/metastore?createDatabaseIfNotExist=true
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
MySQL用户名
username to use against metastore database
javax.jdo.option.ConnectionPassword
MySQL密码
password to use against metastore database
client端配置文件:
hive.metastore.warehouse.dir
/opt/module/hive-1.2.2/warehouse
hive.metastore.local
false
hive.metastore.uris
# server端地址信息
thrift://bigdata01:9083
# 查询表时显示表头信息
hive.cli.print.header
true
# 显示当前所在的数据库
hive.cli.print.current.db
true
启动:
启动服务器端:hive --service metastore
启动客户端:hive