公司要对U8、ERP、人力等系统中的数据进行分析,做一个可视化的数字智慧系统,首先要搭建一个大数据平台,然后将这些系统的数据库数据拉取到大数据平台,我们采用的工具是Sqoop,U8采用的是SqlServer数据库。
大数据平台和sqoop工具在此不多说,自行百度。
1、下载SqlServer需要的jar包放到sqoop的lib目录:sqljdbc4.jar
2、在hive中创建外表
drop table if exists UTU_User;
create EXTERNAL table UTU_User(
cUserID STRING comment '用户标识',
cCode STRING comment '用户编码',
cName STRING comment '用户名',
cPassword STRING comment '密码',
bAllowPcAndMobile STRING comment ''
)comment 'U8测试'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/data/hive/table/UTU_User';
3、sqoop脚本
列出数据库
sqoop list-databases --connect jdbc:sqlserver://10.8.10.*:1433 -username sa -password root
列出某库下的数据表
sqoop list-tables --connect "jdbc:sqlserver://10.8.10.*:1433;DatabaseName=UTU" -username sa -password root
查询数据
sqoop eval --connect jdbc:sqlserver://10.8.10.*:1433 -username sa -password root --query "SELECT * from UTU.dbo.UTU_User"
导到hdfs,也是最终的sqoop脚本
/usr/hdp/3.1.4.0-315/sqoop/bin/sqoop import --connect "jdbc:sqlserver://10.8.10.*:1433;DatabaseName=UTU" --username sa --password root --query "select utemp.cUserID, utemp.cCode, utemp.cName, utemp.cPassword, isnull(uConfig.bAllowPcAndMobile,0) as bAllowPcAndMobile from UTU.dbo.UTU_User utemp left join dbo.UTU_UserConfig uConfig on utemp.cUserID = uConfig.cUserID where \$CONDITIONS" --append --target-dir /data/hive/table/UTU_User -m 1 --null-string '' --null-non-string '' --fields-terminated-by ','