Hive只在一个节点上安装即可
1.上传tar包
2.解压
tar -zxvf hive-1.2.1.tar.gz -C /apps/
3.安装mysql数据库(切换到root用户)(装在哪里没有限制,只有能联通hadoop集群的节点)
4.配置hive
- (a)配置HIVE_HOME环境变量 vi conf/hive-env.sh 配置其中的$hadoop_home
1.配置hive环境变量,编辑 vi /etc/profile #set hive env export HIVE_HOME=/root/apps/hive-1.2.1 export PATH=${HIVE_HOME}/bin:$PATH source /etc/profile 2.配置hadoop环境变量【安装hadoop时候已配置】
cd apps/hive-1.2.1/conf
4.1 cp hive-env.sh.template hive-env.sh
vi hive-env.sh
将以下内容写入到hive-env.sh文件中 export JAVA_HOME=/usr/local/java-1.8.231 export HADOOP_HOME=/root/apps/hadoop-2.6.5 export HIVE_HOME=/root/apps/hive-1.2.1
4.2 配置元数据
vi hive-site.xml
添加如下内容:
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.52.200:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> <description>password to use against metastore database</description> </property> </configuration>
5.安装hive和mysq完成后,将mysql的连接jar包拷贝到hive安装目录的/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行) mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION; FLUSH PRIVILEGES; grant all privileges on *.* to root@"192.168.52.200" identified by "mysql" with grant option; FLUSH PRIVILEGES;
【注意】:需要配置hadoop和hive的环境变量,在启动hive之前需要启动hadoop的hdfs、yarn
6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
/apps/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
7.1 启动hive程序
bin/hive
【注意】移植很强悍,只需要需改好的hive-1.2.1拷贝到其他机器,不许做任何修改,直接可启动用,如:
scp -r hive-1.2.1/ hadoop02:/root/apps/
7.2 显示当前使用的库,和开启字段名称
1. set hive.cli.print.current.db=true; 2. set hive.cli.print.header=true;
8.0如果启动hive服务、客户端呢???
# 启动服务hiveserver2 10000端口 bin/hiveserver2 # 这里没有后台运行 nohup bin/hiveserver2 1>/dev/null 2>&1 & # 后台运行服 # 开启beeline客户端 bin/beeline beeline>!connect jdbc:hive2://hadoop1:10000 用户名root 直接回车 客户端很好看!!!!! # 退出客户端 beeline>!quit
9.0 建内部表(默认是内部表default) 字段之间 , 分开的
create table trade_detail(id bigint, account string, income double, expenses double, time st
9.1 建外部表
建外部表,任意目录,可以非/usr/warehouse/下,外部表删除后,hdfs中的数据目录不会删除。
create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by ',' location '/lod/20190202/';
10. 创建分区表
10.1 普通表和分区表区别:有大量数据增加的需要建分区表
create table log (id bigint, url string) partitioned by (daytime string) row format delimited fields terminated by ',';
10.2 **导入本机数据到分区表 hdfs的hive仓库中
1.手动上传 2.hive命令,再次执行的话会追加数据 hive>load data local inpath '/root/log1.log/' log partition(daytime='20190904'); # 指定分区20190904
10.3 分区表加载数据
select * from log where daytime='20190904'