亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sqoop2 1.99.6 中遇到問題及源碼修改匯總

發布時間:2020-05-25 15:23:17 來源:網絡 閱讀:1073 作者:去買大白兔 欄目:大數據

1.PartitionColumn的基數為1(如下圖)時。則會報錯

sqoop2 1.99.6 中遇到問題及源碼修改匯總

報錯如下圖

sqoop2 1.99.6 中遇到問題及源碼修改匯總

源代碼如下

\sqoop-1.99.6-bin-hadoop200\connector\connector-generic-jdbc\src\main\java\org\apache\sqoop\connector\jdbc\GenericJdbcPartitioner.java

sqoop2 1.99.6 中遇到問題及源碼修改匯總

將源代碼 改為 

sqoop2 1.99.6 中遇到問題及源碼修改匯總sqoop2 1.99.6 中遇到問題及源碼修改匯總

即可 

2.Job中 參數 Null value allowed for the partition column: false 時 即使partition column 有null也不會報錯,還是將為null的記錄導入到HDFS中去了。


結論:不是問題,當該參數為false時,不會起pid is null 的map去導,為true時才會,所以不報錯是正確的。



3.日期時間的問題,具體修改方式如下圖

E:\IdeaProject\sqoop-1.99.6-bin-hadoop200\connector\connector-generic-jdbc\src\main\java\org\apache\sqoop\connector\jdbc\GenericJdbcExtractor.java


sqoop2 1.99.6 中遇到問題及源碼修改匯總


4.oracle 中 時間類型做 pid時會報錯


sqoop2 1.99.6 中遇到問題及源碼修改匯總

 if(JDBC_DRIVER_ORACLE.equals(jdbcDriver)){

        //如果是oracle則做特殊處理

        conditions.append("to_timestamp(\'").append(sdf.format((java.util.Date)lowerBound)).append("\','yyyy-mm-dd hh34:mi:ss.ff')");

        conditions.append(" <= ");

        conditions.append(partitionColumnName);

        conditions.append(" AND ");

        conditions.append(partitionColumnName);

        conditions.append(lastOne ? " <= " : " < ");

        conditions.append("to_timestamp(\'").append(sdf.format((java.util.Date)upperBound)).append("\','yyyy-mm-dd hh34:mi:ss.ff')");

    }else{

        conditions.append('\'').append(sdf.format((java.util.Date)lowerBound)).append('\'');

        conditions.append(" <= ");

        conditions.append(partitionColumnName);

        conditions.append(" AND ");

        conditions.append(partitionColumnName);

        conditions.append(lastOne ? " <= " : " < ");

        conditions.append('\'').append(sdf.format((java.util.Date)upperBound)).append('\'');

    }

    return conditions.toString();

如果是oracle 則做特殊判斷。



5.當用時間作為pid時,如果時間時公元1000年以前會報錯

sqoop2 1.99.6 中遇到問題及源碼修改匯總

修復方法:

--1:

  /**

   * 格式化公元1000年之前的時間字符串

   * @param str

   * @return

   */

  protected String    formatTime(String str) {

      if(str.indexOf("-") == -1){

          return str;

      }else{

          return String.format("%04d", NumberUtils.createInteger(str.split("-")[0])).concat(str.substring(str.indexOf("-")));

      }

  }

--2:

    switch(partitionColumnType) {

      case Types.DATE:

        sdf = new SimpleDateFormat("yyyy-MM-dd");

        minDateValue = Date.valueOf(formatTime(partitionMinValue)).getTime();

        maxDateValue = Date.valueOf(formatTime(partitionMaxValue)).getTime();

        break;

      case Types.TIME:

        sdf = new SimpleDateFormat("HH:mm:ss");

        minDateValue = Time.valueOf(partitionMinValue).getTime();

        maxDateValue = Time.valueOf(partitionMaxValue).getTime();

        break;

      case Types.TIMESTAMP:

        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

        minDateValue = Timestamp.valueOf(formatTime(partitionMinValue)).getTime();

        maxDateValue = Timestamp.valueOf(formatTime(partitionMaxValue)).getTime();

        break;

    }




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

手游| 囊谦县| 平度市| 许昌市| 阿荣旗| 镇原县| 南阳市| 保定市| 谷城县| 嵩明县| 运城市| 黑龙江省| 邵阳市| 若尔盖县| 娱乐| 郸城县| 陇南市| 革吉县| 银川市| 宜阳县| 韶关市| 马山县| 汶上县| 昌图县| 密云县| 彭山县| 神农架林区| 武安市| 大田县| 邢台县| 慈利县| 油尖旺区| 琼海市| 灵寿县| 永吉县| 凭祥市| 新源县| 巩义市| 洛隆县| 郓城县| 大安市|