sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有node上的sqoop都可以运行同一个job
一、sqoop的配置文件在sqoop.site.xml中:
1、sqoop.metastore.server.location
本地存储路径,默认在tmp下,改为其他路径
2、sqoop.metastore.server.port
metastore service端口号
3、sqoop.metastore.client.autoconnect.url
sqoop自动连接的metastore地址,默认是本地的metastore地址
4、sqoop.metastore.client.enable.autoconnect
开启自动连接。sqoop默认连接本地metastore。注释这个配置会开启自动连接。
二、开启metastore service
sqoop下,nohup bin/sqoop metastore
三、创建job
sqoop支持两种增量导入模式,
一种是 append,即通过指定一个递增的列,比如:
–incremental append –check-column num_iid –last-value 0
varchar类型的check字段也可以通过这种方式增量导入(ID为varchar类型的递增数字):
–incremental append –check-column ID –last-value 8
另种是可以根据时间戳,比如:
–incremental lastmodified –check-column created –last-value ‘2012-02-01 11:0:00’
就是只导入created 比’2012-02-01 11:0:00’更大的数据。
bin/sqoop job –meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop –create job_zyztest13 — import –connect jdbc:oracle:thin:@10.106.1.236:1521:orcl –username SQOOP –password sqoop –table LXC_TEST_HBASE_TO_ORACLE –columns NAME,SEX,AGE,CSRQ -m 1 –hbase-table SQOOP_IMPORT_TEST3 –column-family info –hbase-row-key NAME –split-by NAME –incremental lastmodified –check-column CSRQ –last-value ‘2012-02-01 11:0:00’ –verbose
nohup /opt/hadoopcluster/sqoop-1.4.2.bin__hadoop-2.0.0-alpha/bin/sqoop job –exec job_zyztest13 > job_zyztest13.out 2>&1 &
此时,在10.106.1.234上创建了job_zyztest13这个job,通过bin/sqoop job –meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop –list可以查看所有job
四、定时执行
使用linux定时器:crontab -e
编辑定时器,添加*/4 * * * * /opt/hadoopcluster/sqoop-1.4.2.bin__hadoop-2.0.0-alpha/bin/sqoop job –meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop –exec job_zyztest13 > job_zyztest13.out 2>&1 & 任务将会每四分钟执行一次