RDBMS数据定时采集到HDFS
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,[toc]RDBMS数据定时采集到HDFS前言其实并不难,就是使用sqoop定时从MySQL中导入到HDFS中,主要是sqoop命令的使用和Linux脚本的操作这些知识。场景在我们的场景中,需要每天将
千家信息网最后更新 2025年02月03日RDBMS数据定时采集到HDFS
[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`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_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# 日期变量today=`date +%Y-%m-%d`yesterday=`date -d"1 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_ipaddr=192.168.43.116#统计库端口stat_port=3306#统计库名称stat_dbname=db_log_statics#统计库用户名stat_uname=root#统计库密码stat_upwd=root
编写定时任务
crontab -e# 要求每天凌晨2点10分同步数据10 2 * * * /bin/bash /home/uplooking/shells/exportUser2HDFS.sh >/dev/null 2>&1 &
需要注意的是,如果在Notepad++中远程编辑shell脚本文件,在Linux中是无法执行的,原因为,此时在Linux中用vim查看文件格式:set ff,会发现为:fileformat=dos,而正常我们在Linux中编辑的文件应该为:fileformat=unix,所以解决方案为:set ff=unix
数据
数据库
统计
文件
变量
用户
脚本
场景
字段
山东
准备
中用
前言
命令
天将
数据采集
标识
用以
用户名
福建厦门
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河北特定软件开发风格
数据库自增量最大值
以太网计算机网络技术
数据库审计的作用
客户关系管理软件开发模式
软件开发视频全集
汉阳专业的软件开发公司
网络安全需知
我的世界最混乱的服务器下载教学
网络安全法课件
r软件打开数据库数据文件
数据库中搭建环境难吗
审计专业软件开发实施的步骤
软件开发的pd是什么意思
国家网络安全调查问卷
我的世界服务器空岛指令合集
魔域sf服务器要多大
金山区优势软件开发销售公司
网络安全实施工程师发展前景
廊坊软件开发总监招聘网
服务器进系统显示cmd
dnf正在登陆服务器没反应了
我的世界服务器全部调用失败
计算机网络技术刊
数据库连接应用到的标准
用office处理大数据库
数据库的表和列
afi数据库
设置文件服务器
远程兼职软件开发