前言:
Sqoop是一个用于在Hadoop和关系数据库之间进行数据传输的工具。它可以将关系数据库中的数据导入到Hadoop的HDFS、Hive或HBase中,也可以将Hadoop和Hive中的数据导出到关系数据库中。在大数据场景下,Sqoop可以帮助我们轻松地实现数据的迁移和同步。
参数认识:
- connect:指定数据库的JDBC连接字符串。
- username:指定数据库的用户名。
- password:指定数据库的密码。
- table:指定要导入的表名。
- columns:指定要导入的列名。
- target-dir:指定导入的数据存放的目录。
- delete-target-dir:如果目标目录已经存在,是否删除原有的数据。
- num-mappers(--m):指定导入任务的并发度。
- export-dir:指定要导出的数据所在的目录。
一、Sqoop全量导入
1、使用sqoop将MySQL中表的数据同步到大数据平台的HDFS上
//导入命令
sqoop import --connect jdbc:mysql://192.168.137.101:3306/etl_db --username myhive --password 6459367 --table class01 --target-dir /etl_db/test_data --m 1
2、使用sqoop将MySQL中表的数据同步到Hive中
//导入命令
sqoop import --connect jdbc:mysql://192.168.137.101:3306/etl_db --username myhive --password 6459367 --table class04 --hive-import --hive-table etl_data.class04 --m 1
二、Sqoop增量导入
1、使用columns导入想要的列到hive表中
//使用columns导入想要的列到hive表中
sqoop import --connect jdbc:mysql://192.168.137.101:3306/etl_db --username myhive --password 6459367 --table student01 --columns 'id,name' --hive-import --hive-table etl_data.student01 --m 1
2、使用where导入到hive
//使用where导入到hive
sqoop import --connect jdbc:mysql://192.168.137.101:3306/etl_db --username myhive --password 6459367 --table student02 --where "pskq>90" --hive-import --hive-table etl_data.student02 --m 1
3、使用自定义sql的方式导入到hdfs
//使用自定义sql的方式导入到hdfs
sqoop import --connect jdbc:mysql://192.168.137.101:3306/etl_db --username myhive --password 6459367 --target-dir /etl_db/test_data3 --m 1 --query "select id,name,pskq from student03 where pskq>90 and \$CONDITIONS"
三、Sqoop导出
1、使用Sqoop将hdfs上的数据导入到MySQL中
//使用Sqoop将hdfs上的数据导入到MySQL刚刚创建的表中
sqoop export --connect "jdbc:mysql://192.168.137.101:3306/outdata_mysql?useUnicode=true&characterEncoding=utf-8" --username myhive --password 6459367 --table hdfs_mysql --fields-terminated-by ',' --export-dir /etl_db/test_data/part-m-00000
2、使用Sqoop将hdfs上的数据导入到MySQL中
//使用Sqoop将hdfs上的数据导入到MySQL刚刚创建的表中
sqoop export --connect "jdbc:mysql://192.168.137.101:3306/outdata_mysql?useUnicode=true&characterEncoding=utf-8" --username myhive --password 6459367 --table hive_mysql --fields-terminated-by ',' --export-dir /hadoop_data/hive_data01/000000_0