使用Sqoop将MySQL与HDFS数据导入导出

版权声明:本文为IT晓白博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_38617531/article/details/83144933

一、拷贝mysql数据表到hdfs上

1.确保mysql可以远程连接, 防火墙等已关闭或开端口, hadoop已启动, hdfs可访问
2.确保hdfs上不存在目标文件夹, sqoop会自动生成文件夹, 若已存在则报错,要么加上--delete-target-dir
3.命令如下, 参数自行修改, mysql所在IP为192.168.203.7, 用户名密码为root, Mysql数据表teacher, hdfs目录为/mydb//teacher


命令一、一般上传

sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --columns id,name --table teacher --target-dir /mydb/teacher -m 1 --delete-target-dir

--table teacher:连接的是哪个表
--target-dir /teacher:表示输出路径
-m 1:表示指定主键--输出一个文件-指定map个数
--delete-target-dir:删除已经存在的输出文件


命令二、使用sql语句

sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --query 'select * from teacher where id>3 and $CONDITIONS' --target-dir /mydb/teacher -m 1 --delete-target-dir

(将SQL数据库test中的teacher表中id大于3的数据存入hdfs上的teacher目录上)


命令三、追加数据到已存在表中之id

sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --table teacher --target-dir /mydb/teacher -m 1 --check-column id --incremental append --last-value 7

将SQL数据库test中的teacher表中id大于7的数据追加hdfs上的teacher目录上


命令四、加数据到已存在表中之时间:lastmodified

sqoop import --connect jdbc:mysql://192.168.203.72:3306/test --username root --password 123 --table teacher --target-dir /teacher1 -m 1 --check-column last_modified --incremental lastmodified --last-value '2018-10-04 16:37:31'

前提:你表中的数据有datetime类型的字段,安装这个字段追加。

将SQL数据库test中的teacher表中last_modified大于'2018-10-04 16:37:31'的数据加hdfs上的teacher1目录上,

用时间追加的数据保存在不是一个文件中


二、导入HDFS数据到MySQL数据库表中

  1. 在mysql中创建对应字段的数据库表,测试用student
  2. HDFS中的文本文件以,作分隔符分割字段,文件名student.txt
  3. 命令如下,参数依次为mysql数据库地址,用户名密码,mysql数据库表名,HDFS文件所在位置,分隔符

sqoop export --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --table student --export-dir /student.txt --fields-terminated-by ',';


三、通过sqoop查看本地MySQL信息

sqoop list-tables -connect jdbc:mysql://192.168.203.7:3306/test --username root --password root

表示查看test这个数据库中的所有表信息,如下图


sqoop list-databases -connect jdbc:mysql://192.168.203.7:3306/ --username root --password root
 

表示查看mysql所有数据库,如下图类似

猜你喜欢

转载自blog.csdn.net/qq_38617531/article/details/83144933
今日推荐