sqoop增量导入、全量导入、选择导入

sqoop job 保存常用的作业,以便下次快速调用

   --create <job-id>  创建一个新的job.
  --delete <job-id>  删除job
  --exec <job-id>     执行job
  --show <job-id>    显示job的参数
  --list                     列出所有的job
在这里插入代码片

sqoop的增量导入

–check-column (col)	用来作为判断的列名,如id
–incremental (mode)	append:追加,比如对大于last-value指定的值之后的记录进行追加导入。lastmodified:最后的修改时间,追加last-value指定的日期之后的记录
–last-value (value)	指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一值

#如果使用增量导入的话,最好先将mysql的数据导入到hdfs上的作为临时文件使用,
#另外更新的值如果可以根据时间来更新的话,那就更好,可以将语句写成脚本定时进行写入,比如
sqoop job --create order_item_incr -- import --connect jdbc:mysql://hadoop01:3306/bap_ods \
--driver com.mysql.jdbc.Driver \
--username root \
--password root \
--table order_item \
--target-dir hdfs://hadoop01:9000/bap/tmp/tmp_item \
--fields-terminated-by "\\01" \
-m 1 \
--check-column update_time \
--incremental append \
--last-value "2018-12-01 00:00:00"  \
;

#将临时文件导入到hive表中
#脚本里可以写一个时间定时导入前一天的数据
sqoop job --exec order_item_incr;
hive --database szbap_ods -e "load data inpath /bap/tmp/order_item'  into table 		   bap_ods.ods_order_item partition(dt='${yesterday}')";

sqoop的全量导入

#全量导入可以直接将MySQL的数据导入到hive表中
sqoop import --connect jdbc:mysql://hadoop01:3306/bap_ods \
--driver com.mysql.jdbc.Driver \
--username root \
--password root \
--table user_addr \
--target-dir hdfs://hadoop01:9000/bap/ods/ods_user_addr \
--delete-target-dir \
--fields-terminated-by "\\01" \
-m 1 \
;

sqoop选择导入

sqoop import --connect jdbc:mysql://hadoop01:3306/qfbap_ods \
--driver com.mysql.jdbc.Driver \
--username root \
--password root \
--table user_addr \
--target-dir hdfs://hadoop01:9000/bap/ods/ods_user_addr \
--delete-target-dir \
--fields-terminated-by "\\01" \
--query select order_price,order_name where order_id > 10 and $CONDITIONS
-m 1 \
;
#选择导入,后面的条件一定要加上$CONDITIONS,不然会保存无法运行

#另外也可以选择插入指定的列,例如
--columns "order_id,name,price"

猜你喜欢

转载自blog.csdn.net/sofun2018/article/details/86317673
今日推荐