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 显示当前使用的库,和开启字段名称
set hive.cli.print.current.db=true;
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 string) row format delimited fields terminated by ',';
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'
评论