重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Sqoop介绍
站在用户的角度思考问题,与客户深入沟通,找到蓬安网站设计与蓬安网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、网页空间、企业邮箱。业务覆盖蓬安地区。Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
1.sqoop下载
https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/
2.sqoop上传到服务器 并解压到相应的目录
3.修改sqoop的配置文件
4.修改配置文件
5.拷贝sqoop需要的mysql 数据库驱动
cp /home/nflow/servers/hive/lib/mysql-connector-java-5.1.26-bin.jar /home/nflow/servers/sqoop-1.4.7/lib/6.启动sqoop测试 (可以看出连接数据库了)
./sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root --password 1234567.sqoop导入数据
从博主拿过来的sql
drop database if exists userdb; create database userdb; use userdb; drop table if exists emp; drop table if exists emp_add; drop table if exists emp_conn; CREATE TABLE emp( id INT NOT NULL, name VARCHAR(100), deg VARCHAR(100), salary BIGINT, dept VARCHAR(50) ); CREATE TABLE emp_add( id INT NOT NULL, hno VARCHAR(50), street VARCHAR(50), city VARCHAR(50) ); CREATE TABLE emp_conn( id INT NOT NULL, phno VARCHAR(50), email VARCHAR(50) ); insert into emp values(1201,'gopal','manager','50000','TP'); insert into emp values(1202,'manisha','Proof reader','50000','TP'); insert into emp values(1203,'khalil','php dev','30000','AC'); insert into emp values(1204,'prasanth','php dev','30000','AC'); insert into emp values(1205,'kranthi','admin','20000','TP'); insert into emp_add values(1201,'288A','vgiri','jublee'); insert into emp_add values(1202,'108I','aoc','sec-bad'); insert into emp_add values(1203,'144Z','pgutta','hyd'); insert into emp_add values(1204,'78B','old city','sec-bad'); insert into emp_add values(1205,'720X','hitec','sec-bad'); insert into emp_conn values(1201,'2356742','gopal@tp.com'); insert into emp_conn values(1202,'1661663','manisha@tp.com'); insert into emp_conn values(1203,'8887776','khalil@ac.com'); insert into emp_conn values(1204,'9988774','prasanth@ac.com'); insert into emp_conn values(1205,'1231231','kranthi@tp.com'); ———————————————— ####感谢此博主 版权为别人的版权 我只是试用下 版权声明:本文为CSDN博主「记录每一份笔记」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/yumingzhu1/article/details/80678525从mysql 到 hdfs
#/bin/bash ./bin/sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ --username root \ --password 123456 \ --table emp \ --m 1 [nflow@hadoop-master1 sqoop-1.4.7]$ pwd /home/nflow/servers/sqoop-1.4.7 [nflow@hadoop-master1 sqoop-1.4.7]$ 默认导出的位置为 /usr/用户/表名 数据库不能用localhost或者127.0.0.1 不然会报错 必须要用IP地址HDFS 目录下次在导入不能重复
重新修改脚本如下 这样每次都可以生成新的
mysql数据导入到hive里面
数据库数据
./sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ ##userdb --username admin \ #数据库admin用户 --password 123456 \ #数据库admin用户的密码 --table emp_add \ #数据库admin里面的emp_add表 --delete-target-dir \ #每次删除 --num-mappers 1 \ ##mapreduce 进程个数 --hive-import \ ##指定hive --hive-database default \ ##hive的默认数据库 --hive-table empadd \ ##hive里面 default 数据的表名称 --fields-terminated-by '\t' ###换行sqoop再次导入同一张表测试 测试结果为 如果数据库有新增的数据 那么hive将会也会拿过来,导致重复 如下图,如何避免这个问题呢 sqoop的增量同步
#######sqoop增量同步到hive
id大于1207 的会同步 不会导致重复
./sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ --username admin \ --password 123456 \ --table emp_add \ --num-mappers 1 \ --hive-import \ --hive-database default \ --hive-table empadd \ --fields-terminated-by '\t' \ --incremental append \ --check-column id \ --last-value 1207另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。