首页 > 代码库 > 使用sqoop从mysql往hive中增量导数据shell脚本
使用sqoop从mysql往hive中增量导数据shell脚本
一:sqoop增量导入的两种方式
Incremental import arguments:
Argument | Description |
---|---|
--check-column (col) | Specifies the column to be examined when determining which rows to import. (the column should not be of type CHAR/NCHAR/VARCHAR/VARNCHAR/ LONGVARCHAR/LONGNVARCHAR) |
--incremental (mode) | Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified . |
--last-value (value) | Specifies the maximum value of the check column from the previous import. |
此处采用的--increamental append方式,这种方式需注意主键或split-colunm是递增,否则建议在关系表中增加一个createTime字段,采用lastmodified方式。
二:shell脚本
1 #!/bin/sh 2 export SQOOP_HOME=/usr/share/sqoop-1.4.4 3 hostname="192.168.1.199" 4 user="root" 5 password="root" 6 database="test" 7 table="tags" 8 curr_max=0 9 10 function db_to_hive(){11 12 ${SQOOP_HOME}/bin/sqoop import --connect jdbc:mysql://${hostname}/${database} --username ${user} --password ${password} --table ${table} --split-by docid --hive-import --hive-table lan.ding 13 --fields-terminated-by ‘\t‘ --incremental append --check-column docid --last-value ${curr_max} 14 result=`mysql -h${hostname} -u${user} -p${password} ${database}<<EOF 15 select max(docid) from ${table};16 EOF`17 curr_max=`echo $result |awk ‘{print $2}‘`18 }19 20 if [ $# -eq 0 ];then21 while true22 do23 db_to_hive24 sleep 12025 done26 exit27 fi
每隔2分钟,就往hive中增量导入数据。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。