解压hive到/usr/local/src目录下并修改名称为hive
mv apache-hive-3.1.3-bin hive
配置hive的环境变量
#HIVE_HOME
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH=$HIVE_HOME/bin:$PATH
source一下重启
配置hive-env.sh,添加hive,java,hadoop的环境变量进去
export HIVE_CONF_DIR=/usr/local/src/hive/conf
export JAVA_HOME=/usr/local/src/jdk
export HADOOP_HOME=/usr/local/src/hadoop
#运行hive数据库
bin/hive
启动hive如果出现hive则成功,但是此时的hive没有配置数据库所以无法操作
查看本机安装的mysql
rpm -qa|grep mariadb
如果有 mysql-libs-5.1.73-7.el6.x86_64则卸载,因为要安装的mysql与这个会冲突
卸载mysql
rpm -e --nodeps mysql-libs-+mysql的版本
安装mysql
解压mysql包 到mysql_lib文件夹中
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar mysql_lib/
使用rpm安装
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm #如果报错需要依赖则在后面添加 --force --nodeps
启动mysql
systemctl start mysqld
在/etc/my.cnf文件中[mysqld]下添加skip-grant-tables,为跳过mysql密码直接进入mysql
修改文件之后需要重启mysqld服务
systemctl restart mysqld
进入mysql 直接回车
mysql -u root -p
进入mysql后输入use mysql修改root的密码
update user set authentication_string=password('新密码') where user='root';
两个都可以修改
alter user 'root'@'localhost' identified by '000000';
可能会报错,报错原因可能是密码太过简单,则需要修改密码策略
刷新生效
flush privileges;
退出mysql,将配置文件中的跳过密码删除,重新启动mysql服务
再次进入mysql创建hive数据库
create database hive;
修改密码策略
查看密码策略
show variables like 'validate_password%';
修改密码强度为low
set global validate_password_policy=0;
修改密码长度为6位
set global validate_password_length=6;
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '000000';
mysql设置远程登录
刷新
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '000000' WITH GRANT OPTION;
FLUSH PRIVILEGES;
查询所有用户与权限
use mysql
SELECT User, Host FROM mysql.user;
如果mysql出现权限问题需要,use mysql 进入数据库再进行查询,修改权限
配置hive-site.xml文件再hive/conf目录下,如果没有则vi新建一个
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--配置mysql数据库的连接地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive</value>
</property>
<!--配置mysql数据库的连接驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--配置mysql数据库的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--配置mysql数据库的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
</property>
</configuration>
拷贝驱动到lib目录下
‘初始化数据库
schematool -initSchema -dbType mysql
启动hive之前要启动hadoop
之后输入hive进入hive,如果出现hive>则成功
hive创建表
内部表
create table test
(id int,name string,age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
,是以逗号分割,如果导入的数据没有以逗号分割则会全部为null
外部表
create external table test_waibu
(number int,name string,address string,age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
;
> location '/user/hive/external/fz_external_table';
建外部表时要加external关键字,我在建表时指定了location,当然也可以不指定,不指定就默认使用hive.metastore.warehouse.dir指定的路径。
查看表的类型
desc formatted 表名
Table Type: MANAGED_TABLE为内部表
Table Type: EXTERNAL_TABLE为外部表
修改为外部表
alter table 表名 set tblproperties('EXTERNAL'='TRUE');
修改为内部表
alter table 表名 set tblproperties('EXTERNAL'='FALSE');
创建分区表
create table default.test(userid string, name string, age int) partitioned by (logday string);
创建 test 分区表,在创建时使用 partitioned by 进行指定,该表为单分区表,logday 被是指定的分区字段(在实际应用中,通常会存在多分区表的情况)
将本地文件123.txt导入到hive表中
load data local inpath '/usr/local/src/hive/external/123.txt' into table neibu;
只删除表中的数据
truncate table 表名
标签:local,hive,rpm,mysql,table,root
From: https://www.cnblogs.com/gudeman/p/17338172.html