sqoop的import与export及其脚本使用

时间:2025-04-12 07:48:23

2、测试Sqoop

⑴链接MySQL数据库,并list数据库中的databases,测试Sqoop是否配置正确。

$bin/sqoop list-databases \
--connect jdbc:mysql://hostname:3306 \
--username root \
--password root

3、import

⑴默认情况下导入数据到HDFS

$/bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable


⑵指定目录和Mapper个数导入HDFS

①创建目录

${HADOOP_HOME}/bin/hdfs dfs -mkdir -p /user/sqoop/


②设置map个数为1,指定目录为/user/sqoop/,如果目标目录已经存在则先删除
$ bin/sqoop import \
--connect jdbc:mysql://:3306/mydb \
--username root \
--password root \
--table my_user \
--target-dir /user/hive/warehouse/my_user \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns  id,passwd \
--where "id<=3"


⑶增量导入HDFS
①增量导入数据到HDFS文件中,可以通过下面三个参数进行设置:
--check-column
--incremental
--last-value
$bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable \
--num-mappers 1 \
--target-dir /user/sqoop/ \
--fields-terminated-by "\t" \
--check-column id \
--incremental append \
--last-value 4      //表示从第5位开始导入


⑷指定文件格式导入HDFS
①默认情况下,导入数据到HDFS,文件存储格式为textfile,可以通过属性进行指定,比如文件存储格式为parquet
$bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable \
--num-mappers 1 \
--target-dir /user/sqoop/ \
--fields-terminated-by "\t" \
--as-parquetfile


⑸指定压缩格式导入HDFS
①默认情况下,导入的HDFS文件是不压缩的,可以通过属性--compress 和 --compression-codec设置;
$bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable \
--num-mappers 1 \
--target-dir /user/sqoop/ \
--fields-terminated-by "\t" \
--compress \
--compression-codec 


⑹把select查询结果导入HDFS
①把select查询结果导入HDFS,必须包含'$CONDITIONS'在where子句中;
$ bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--target-dir /user/hive/warehouse//mytable \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select id,account from my_user where id>=3 and $CONDITIONS'


⑺导入数据到Hive中
$ bin/sqoop import \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable \
--num-mappers 1 \
--hive-import \
--hive-database mydb \
--hive-table mytable \
--fields-terminated-by "\t" \
--delete-target-dir \
--hive-overwrite 


⑻脚本的使用(以数据导入为例)
①导入数据到HDFS
export
--connect
jdbc:mysql://hostname:3306/mydb
--username
root
--password
root
--table
mytable
--num-mappers
1
--export-dir
/user/hive/warehouse//mytable
--input-fields-terminated-by
"\t"


②执行脚本
$ bin/sqoop  --options-file 


4、export
⑴从Hive或者HDFS导出数据到MySQL
$ bin/sqoop export \
--connect jdbc:mysql://hostname:3306/mydb \
--username root \
--password root \
--table mytable \
--num-mappers 1 \
--export-dir /user/hive/warehouse//mytable \
--input-fields-terminated-by "\t"