Import Sqoop';的增量类型lastmodified不执行增量导入

Import Sqoop';的增量类型lastmodified不执行增量导入,import,mapreduce,hdfs,sqoop,Import,Mapreduce,Hdfs,Sqoop,我使用sqoopv1.4.2对作业进行增量导入。这些工作是: --create job_1--import--connect--username--password--m--split by--target dir--table--check column--incremental append--last value 1 注: 增量类型为追加 创造就业机会是成功的 作业执行多次成功 可以在HDFS中看到正在导入的新行 --创建作业\u 2--导入--连接--用户名--密码--m--按--目标目

我使用sqoopv1.4.2对作业进行增量导入。这些工作是:
--create job_1--import--connect--username--password--m--split by--target dir--table--check column--incremental append--last value 1

注:

  • 增量类型为追加
  • 创造就业机会是成功的
  • 作业执行多次成功
  • 可以在HDFS中看到正在导入的新行
  • --创建作业\u 2--导入--连接--用户名--密码--m--按--目标目录--表--检查列--增量最后修改--最后值1981-01-01

    注:

  • 增量类型是最后修改的
  • 作业创建成功,表名与作业1中使用的表名不同
  • 作业执行仅第一次成功
  • 可以在HDFS中看到为首次执行而导入的行
  • 后续作业执行失败,出现以下错误:

    ERROR security.UserGroupInformation: PriviledgedActionException as:<MY_UNIX_USER>(auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory <TARGET_DIR_AS_SPECIFIED_IN_job_2> already exists
    ERROR tool.ImportTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory <TARGET_DIR_AS_SPECIFIED_IN_job_2> already exists
        at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:132)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:872)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:833)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1177)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:833)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:476)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:506)
        at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:141)
        at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:202)
        at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:465)
        at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:108)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
        at org.apache.sqoop.tool.JobTool.execJob(JobTool.java:228)
        at org.apache.sqoop.tool.JobTool.run(JobTool.java:283)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
        at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57)
    
    ERROR security.UserGroupInformation:PriviledgedActionException as:(auth:SIMPLE)原因:org.apache.hadoop.mapred.filealreadyexistException:输出目录已存在
    错误工具.ImportTool:运行导入作业时遇到IOException:org.apache.hadoop.mapred.filealreadyexistException:输出目录已存在
    位于org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:132)
    位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:872)
    位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:833)
    位于java.security.AccessController.doPrivileged(本机方法)
    位于javax.security.auth.Subject.doAs(Subject.java:396)
    位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1177)
    位于org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:833)
    位于org.apache.hadoop.mapreduce.Job.submit(Job.java:476)
    位于org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:506)
    位于org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:141)
    位于org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:202)
    位于org.apache.sqoop.manager.SqlManager.importable(SqlManager.java:465)
    位于org.apache.sqoop.manager.MySQLManager.importable(MySQLManager.java:108)
    位于org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
    位于org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
    位于org.apache.sqoop.tool.JobTool.execJob(JobTool.java:228)
    位于org.apache.sqoop.tool.JobTool.run(JobTool.java:283)
    位于org.apache.sqoop.sqoop.run(sqoop.java:145)
    位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    位于org.apache.sqoop.sqoop.runSqoop(sqoop.java:181)
    位于org.apache.sqoop.sqoop.runTool(sqoop.java:220)
    位于org.apache.sqoop.sqoop.runTool(sqoop.java:229)
    位于org.apache.sqoop.sqoop.main(sqoop.java:238)
    位于com.cloudera.sqoop.sqoop.main(sqoop.java:57)
    

  • 如果希望一次又一次地执行作业2,则需要使用--incremental lastmodified--append

    sqoop--create job_2--import--connect--username
    --密码--表--增量lastmodified--追加
    --检查列--最后一个值“2017-11-05 02:43:43”--目标目录
    -M1
    
    您最终是如何解决这个问题的?坦率地说,我转到了下一个项目,所以我不知道。大数据/sqoop不是我的核心能力,所以我不需要花太多时间去检查。很抱歉,我帮不了你。这个问题的问题是你在两份工作中的产出是相同的--目标目录。对于每个作业,这应该是不同的,或者每个作业应该在运行之前删除当前文件。感谢Byron的指针!但是,正如前面所评论的,我不再是sqoop了,所以无法验证。但是,感谢您的回复!这就是社区的力量和像你这样了不起的撒玛利亚人的支持:)
    sqoop --create job_2 -- import --connect <CONNECT_STRING> --username <UNAME> 
    --password <PASSWORD> --table <TABLE> --incremental lastmodified --append 
    --check-column<COLUMN> --last-value "2017-11-05 02:43:43" --target-dir 
    <TARGET_DIR> -m 1