Hive 搭建和实操
浙江理工大学 2024 大数据应用项目实践 实操 Hive
从 这篇博客 搭建Hadoop后,在node1上安装MySQL和Hive
安装 MySQL
安装MySQL 服务器
在node1上执行以下命令来安装MySQL:
sudo apt update
sudo apt-get install mysql-server配置MySQL
启动MySQL服务并进行安全设置:
sudo systemctl start mysql
sudo mysql_secure_installation按照提示完成安全设置,创建root用户密码等。
创建Hive数据库
使用MySQL登录并创建Hive所需的数据库和用户:
sudo mysql -u root -p
在MySQL shell中执行以下命令:
CREATE DATABASE metastore;
CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
安装 Hive
下载并解压Hive
在node1上执行以下命令来下载并解压Hive:
cd /usr/local
wget https://downloads.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
sudo tar -zxvf apache-hive-3.1.3-bin.tar.gz
sudo mv apache-hive-3.1.3-bin hive
rm apache-hive-3.1.3-bin.tar.gz配置环境变量
在~/.bashrc文件中添加以下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin使更改生效:
source ~/.bashrc
配置Hive
创建Hive配置目录并编辑配置文件:
sudo mkdir -p $HIVE_HOME/conf
cd $HIVE_HOME/conf
# sudo cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
sudo vim $HIVE_HOME/conf/hive-site.xmlhive-site.xml
:<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivepassword</value>
<description>Password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>下载MySQL JDBC驱动
下载MySQL JDBC驱动并放到Hive的lib目录:
cd /usr/local
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz
tar -zxvf mysql-connector-java-8.0.26.tar.gz
sudo cp mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar $HIVE_HOME/lib/
rm mysql-connector-java-8.0.26.tar.gz
# rm -r mysql-connector-java-8.0.26初始化Hive Metastore
运行以下命令初始化Hive Metastore:
schematool -initSchema -dbType mysql
验证安装
启动Hive CLI并验证安装:
hive
修改HDFS权限
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/warehouse
验证 Hive
创建一个目录来存放数据文件
hdfs dfs -mkdir -p /user/hive/warehouse/user_data
上传数据文件到新目录
确保数据文件在本地存在,如果不存在,请创建一个:
echo -e "1,John\n2,Jane\n3,Bob" > data.csv
然后将数据文件上传到 HDFS 的
/user/hive/warehouse/user_data
目录:hdfs dfs -put data.csv /user/hive/warehouse/user_data/
在Hive CLI中,运行以下命令创建一个示例表并查询:
CREATE EXTERNAL TABLE IF NOT EXISTS user_data (
id INT,
name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://node1:8020/user/hive/warehouse/user_data';
SELECT * FROM user_data;
外部表 案例实操
分别创建部门和员工外部表,并向表中导入数据。
1 原始数据
注意数据以制表符分隔
dept.txt
10 ACCOUNTING 1700 |
emp.txt
7369 SMITH CLERK 7902 1980-12-17 800.00 0.00 20 |
2 建表语句
创建部门表
create external table if not exists dept( |
创建员工表
create external table if not exists emp( |
3 查看创建的表
show tables; |
4 向外部表中导入数据
导入数据,原始数据文件位于虚拟机上
load data local inpath '/root/dept.txt' into table default.dept; |
查询结果
select * from dept; |
5 查看表格式化数据
desc formatted dept; |
评论