做网站签合同,小规模网站开发税率,网站游戏网站开发,济南市新闻最新消息[toc] RDBMS数据定时采集到HDFS 前言 其实并不难#xff0c;就是使用sqoop定时从MySQL中导入到HDFS中#xff0c;主要是sqoop命令的使用和Linux脚本的操作这些知识。 场景 在我们的场景中#xff0c;需要每天将数据库中新增的用户数据采集到HDFS中#xff0c;数据库中有tim…[toc] RDBMS数据定时采集到HDFS 前言 其实并不难就是使用sqoop定时从MySQL中导入到HDFS中主要是sqoop命令的使用和Linux脚本的操作这些知识。 场景 在我们的场景中需要每天将数据库中新增的用户数据采集到HDFS中数据库中有time字段
用以标识该用户信息录入数据库的时间所以下面的数据导入操作也是依赖于这个字段。 数据准备 在MySQL数据库中准备如下数据 ##构建sql的操作
create DATABASE IF NOT EXISTS db_log_statics;
use db_log_statics;
CREATE TABLE t_user_info (id bigint(20) NOT NULL,name varchar(20) COLLATE utf8_bin DEFAULT NULL,address varchar(20) COLLATE utf8_bin DEFAULT NULL,time date DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin;insert into t_user_info (id, name, address, time) values(1,张三,北京朝阳,2018-04-05);
insert into t_user_info (id, name, address, time) values(2,李四,河南洛阳,2018-04-05);
insert into t_user_info (id, name, address, time) values(3,王五,广东邵阳,2018-04-05);
insert into t_user_info (id, name, address, time) values(4,赵六,山东德州,2018-04-07);
insert into t_user_info (id, name, address, time) values(5,周七,山东青岛,2018-04-07);
insert into t_user_info (id, name, address, time) values(6,魏八,福建厦门,2018-04-07);
insert into t_user_info (id, name, address, time) values(7,王二麻子,山西五台山,2018-04-06);
insert into t_user_info (id, name, address, time) values(8,王大锤,陕西榆林,2018-04-06);
insert into t_user_info (id, name, address, time) values(9,燕小六,云南大理,2018-04-06);
insert into t_user_info (id, name, address, time) values(10,雷布斯,湖北仙桃,2018-04-06); 脚本编写 exportUser2HDFS.sh #!/bin/env bash# shell中引用外部文件的变量
source /home/uplooking/shells/db-mysql.conf# source 系统的环境变量
source ~/.bash_profile
# 日期变量
todaydate %Y-%m-%d
yesterdaydate -d1 day ago %Y-%m-%d/home/uplooking/app/sqoop/bin/sqoop import \
--connect jdbc:mysql://${stat_ipaddr}:${stat_port}/${stat_dbname} \
--username ${stat_uname} \
--password ${stat_upwd} \
--target-dir hdfs://ns1/input/t_user/${yesterday} \
--query SELECT id, name, address, time FROM t_user_info WHERE time ${yesterday} AND time ${today} AND \$CONDITIONS \
-m 1 --fields-terminated-by , --split-by , db-mysql.conf #统计库数据库ip地址
stat_ipaddr192.168.43.116
#统计库端口
stat_port3306
#统计库名称
stat_dbnamedb_log_statics
#统计库用户名
stat_unameroot
#统计库密码
stat_upwdroot 编写定时任务 crontab -e# 要求每天凌晨2点10分同步数据
10 2 * * * /bin/bash /home/uplooking/shells/exportUser2HDFS.sh /dev/null 21 需要注意的是如果在Notepad中远程编辑shell脚本文件在Linux中是无法执行的原因为此时在Linux中用vim查看文件格式set ff会发现为fileformatdos而正常我们在Linux中编辑的文件应该为fileformatunix所以解决方案为set ffunix