sqoop2增量导入无法指定last value问题解决方法
sqoop2增量导入无法指定last value问题解决方法
林远图raymond 发表于2年前
sqoop2增量导入无法指定last value问题解决方法
  • 发表于 2年前
  • 阅读 108
  • 收藏 0
  • 点赞 1
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: sqoop2

在用sqoop 1.99.6创建任务进行增量导入时,在incremental read后需要输入check column和last value,但是再输入last value时输入任何值都会提示超出了size,size为-1。以下是这个问题的解决方法。

sqoop 1.99.6版本尚不稳定,源码存在错误,上个问题的错误原因在于a/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java中存在错误代码,一共存在两处错误

第一处为:

@@ -433,7 +433,7 @@ public final class ConfigFiller {

     String opt = ConfigOptions.getOptionKey(prefix, input);

     if (line.hasOption(opt)) {

       String value = line.getOptionValue(ConfigOptions.getOptionKey(prefix, input));

-      if(value.length() > input.getMaxLength()) {

+      if((input.getMaxLength() >= 0) && (value.length() > input.getMaxLength())) {

         errorMessage(input, "Size of input exceeds allowance for this input"

           + " field. Maximal allowed size is " + input.getMaxLength());

       }


第二处为:

@@ -1039,7 +1039,7 @@ public final class ConfigFiller {

       input.setValue(userTyped);

 

       // Check that it did not exceeds maximal allowance for given input

-      if(userTyped.length() > input.getMaxLength()) {

+      if((input.getMaxLength() >= 0) && (userTyped.length() > input.getMaxLength())) {

         errorMessage("Size of input exceeds allowance for this input"

           + " field. Maximal allowed size is " + input.getMaxLength());

         return fillInputStringWithBundle(input, reader, bundle);


修改后把sqoop-shell-1.99.6.jar中的ConfigFiller.class替换成修改后的.class,即可进行正常的增量导入。

sqoop-shell-1.99.6.jar在$SQOOP2_HOME/shell/lib/路径中,替换就OK了


标签: sqoop2
共有 人打赏支持
粉丝 0
博文 2
码字总数 1127
×
林远图raymond
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: