打开四台虚拟机开启集群
连接hadoop1数据库
导入三个sql
docker images 查看镜像
启动hive 创建库表create database data;
创建表的脚本(修改库名表名表字段)
修改配置文件log /datax/job
数据库密码和字段名
库名和hadoop1的网址192.168.174.10还有表名
Hadoop2的网址192.168.174.11
Path desc formatted order_status_log20200901;
分隔符变成,修改字段
执行命令:
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
看一下active状态的namenode是哪台服务器
defaultFS后面要配置的是active的namenode的ip地址
手动添加数据
python /root/datax/bin/datax.py /root/datax/job/log.json
自动化采集 cd /sh 创建date文本 里面加入日期和log中日期保持一致
脚本(注意修改表名前缀)
创建分区表 注意use库
create table order_status_log(id string,order_id string,order_status string,operate_time string) partitioned by (day string) row format delimited fields terminated by ',';
将三个hive表中的数据导入到分区表
导入01的数据到分区表中注意修改库名表名
sql:
hive> insert into table order_status_log partition(day="2020-09-01") select * from data.order_status_log20200901;
导入02的数据到分区表中
sql:
hive> insert into table order_status_log partition(day="2020-09-02") select * from data.order_status_log20200902;
导入03的数据到分区表中
sql:
hive> insert into table order_status_log partition(day="2020-09-03") select * from data.order_status_log20200903;
3)在mysql中创建一个表用来存储结果数据的
CREATE TABLE `month_count`(
`day` DATE,
`count` INT
)ENGINE=INNODB CHARSET=utf8;
4)写脚本
a)将9月的hive表中的数据一次性导入hive的分区
创建容器
docker run -itd --name=mysql-test -p 8888:3306 -e MYSQL_ROOT_PASSWORD=123456 1d7aba917169 /bin/bash
查看容器
docker ps –a
进入容器
docker exec -it mysql-test /bin/bash
开启MySQL服务
service mysql start
进入mysql
mysql -uroot –p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
连接sqlyog 注意修改端口号
执行脚本