Sqoop的基本使用

最近在复习sqoop使用,可以概括为全量导入HDFS/HIVE,查询导入HDFS/HIVE,增量导入HDFS/HIVE,导出。

一.sqoop全量导入HDFS

sqoop使用import命令来完成RDMS向HDFS或者HIVE导入数据。最基本的命令如下

sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--table course \
--delete-target-dir \ -- 注意:要导入的路径必须不存在,不然的话会报错,因为是走的MR程序
--target-dir /1119/course -m 1
##注释:如果没有指定分隔符,默认是用逗号进行分割的。如果要制定分隔符,使用--fields-terminater-by
##注释:默认使用一个map程序进行导入,如果要使用多个并行导入的话,要么表有主键,要么根据--split-by进行切分,
##注释:如果是根据字符串切分的话 还要在import命令后边加上-Dorg.apache.sqoop.splitter.allow_text_splitter=true 
##注释:其他常用命令
--compress 指定压缩  如果只写上边这个 其实就相当于与--compression-codec gzip
--compression-codec gzip   指定压缩格式 lzop,gzip,DEFLATE,bzip2,Snappy
--null-non-string   '\N'  空值处理,非字符串类的空值
--null-string  '\N'       空值处理,字符串类的空值
--as-avrodatafile       指定生成文件类型
--as-parquetfile        指定生成文件类型
--as-sequencefile       指定生成文件类型
--as-textfile           指定生成文件类型

二.sqoop全量导入Hive

sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--table course \
--hive-import \
--delete-target-dir \
--hive-table ods1110.course \
--hive-overwrite \
-m 2 \
--hive-partition-key  "ds" \
--hive-partition-value "20210127" \
##注释:要导入的hive表,可以不提前创建,也可以提前创建,如果要覆盖原来的数据,指定--hive-overwrite

三.条件导入HDFS和HIVE

条件导入HDFS HIVE(如果是--query则不能指定--table,且导入hive需要指定一个临时目录)
sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--query 'SELECT cid,cname FROM course WHERE $CONDITIONS' \
--delete-target-dir \
--target-dir /1119/query -m 1


sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--query 'SELECT cid,cname FROM course WHERE $CONDITIONS' \
--target-dir /tmp/1119 \
--hive-import \
--hive-table ods1110.query \
--hive-overwrite -m 1

四.增量导入append和lastmodified 两种模式

sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--table course \
--target-dir /1119/append \
--incremental append \
--check-column cid \
--last-value 5 \
-m 1
#注释:append模式能够导入hive,lasdmodified模式不能导入hive
##注释:如果是lastmodified模式,那么不要写--delete-target-dir,否则会报错。append模式不会报错
##注释:如果是lastmodified模式,那么还要加一个--append追加,或者--merge-key id 合并


sqoop import \
--connect jdbc:mysql://windows:3306/my_db2 \
--username root \
--password 123456 \
--table testApp \
--target-dir /1119/append2 \
--incremental lastmodified \
--check-column mod_time \
--last-value "2022-11-21" \
--append \
-m 1

五.sqoop将数据导出到MySQL

sqoop  export 
--connect jdbc:mysql://windows:3306/my_db2 
--username root 
--password 123456 
--table t1 
--input-fields-terminated-by ',' 
--update-mode allowinsert  
--update-key id 
--export-dir '/user/hive/warehouse/t1' 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值