亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

sqoop 從oracle導數據到hive中,date型數據時分

系統 1763 0

oracle數據庫中Date類型倒入到hive中出現 時分秒截斷問題 解決方案

1.問題描述:

? ? 用sqoop將oracle數據表倒入到hive中,oracle中Date型數據會出現時分秒截斷問題,只保留了‘yyyy-MM-dd',而不是’yyyy-MM-dd HH24:mi:ss'格式的,后面的‘HH24:mi:ss’被自動截斷了,在對時間要求到秒級的分析處理中這種截斷會產生問題。

2.解決方案:

? ? 在用sqoop倒入數據表是,添加--map-column-hive 和--map-column-java參數,來改變數據表列的默認映射類型(默認情況下sqoop倒入hive中Date類型會被映射成String),將Date列映射成Timestamp類型,在我的問題中我是通過sqoop創建job,進行數據表按時間增量倒入的,PASSTIME列的數據類型是Date,腳本如下:

      sqoop job --create jobimport2hiveofv_vehicleinfo -- import --hive-import 
      
        --map-column-java PASSTIME=
        
          java.sql.Timestamp
        
         --map-column-hive PASSTIME=
        
          TIMESTAMP
        
      
       --incremental append --connect jdbc:oracle:thin:@
      
        118.228
      
      .
      
        196.29
      
      :
      
        1521
      
      /pmptgdbanalyze --username SAN --password PASS --verbose -m 
      
        1
      
       --bindir /opt/sqoop-
      
        1.4
      
      .
      
        4
      
      /lib --table V_VEHICLEINFO --check-column PASSTIME --
      
        last
      
      -value 
      
        '
      
      
        2014-04-20 12:00:00
      
      
        '
      
    

注意:

1)紅色字體標注的兩個參數用來改變列的映射類型,藍色字體標注的是數據類型,java.sql.Timestamp要帶包名寫全,否則可能會出錯。

2)--map-column-java和--map-column-hive連個參數都要顯示給出,如果只給出--map-column-hive那么只會改變hive中表列的數據類型,而codegen生成的Tablename.java源文件中還會是java.sql.Date類型,這樣在轉換成hive表中的TIMESTAMP類型時,就會出錯導致hive中的PASSTIME字段全部為null。原因可能是由于Date類型默認格式‘yyyy-M-dd',而轉化到hive Timestamp類型時,嚴格要求按照’yyyy-mm-dd hh:mm:ss[.f...]'格式轉換,參見hive官網timestamp格式說明。

3)如果不設置--map-column-hive參數,只設置--map-column-java 為java.sq..Timestamp,也可以實現數據精確到時分秒,只不過以string類型保存到列hive中。 事實上,在我實驗后,發現如果指定--mapcolumn-hive參數為timestamp,在java中使用對應的時間where比較條件時,無法查出數據,反而,指定--map-column-hive參數為string,卻能夠在hive中和java代碼中都能夠使用時間列參與查詢。

?

3.參考說明:

sqoop user guide: http://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html#_selecting_the_data_to_import ?查看map-column-hive和map-column-java參數說明

hive languageManual: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-timestamp ?查看hive支持的時間類型說明

hive日期函數
http://athenaxu.blog.163.com/blog/static/2057220392014025332775/
hive數據類型轉換
http://www.iteblog.com/archives/892

hive開啟行轉列功能:
> set hive.cli.print.header=true; // 打印列名
> set hive.cli.print.row.to.vertical=true; // 開啟行轉列功能, 前提必須開啟打印列名功能
> set hive.cli.print.row.to.vertical.num=1; // 設置每行顯示的列數
> select * from example_table where pt='2012-03-31' limit 2;

hive查看數據表結構、列類型

> desc TableName;

sqoop 從oracle導數據到hive中,date型數據時分秒截斷問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品福利视频第一 | 偷偷鲁影院手机在线观看 | 久久精品国产精品亚洲婷婷 | 国产成人精品亚洲日本在线 | 成年人黄色小视频 | 久青草香蕉精品视频在线 | 日批日韩在线观看 | 在线不卡日本 | 久草最新在线 | 亚洲综合日韩中文字幕v在线 | 日韩专区第一页 | 久久的爱久久的你 | 男人的网站在线观看 | 久久香蕉网站 | 四虎免费大片aⅴ入口 | 久草在线2 | 伊人久久一本 | 免费鲁丝片一级在线观看 | 久久9966精品国产免费 | 色婷婷久久| 国产精品久久亚洲不卡动漫 | 久久青草国产免费观看 | 亚洲激情一区 | 四虎影视国产884a精品亚洲 | 亚洲最新视频在线观看 | 奇米婷婷| 97福利视频| 久久久91 | 欧美激情精品久久久久久久 | 日韩在线视频网站 | 亚洲精品久荜中文字幕 | 国产情侣偷国语对白 | 亚洲图片一区二区 | 国产香蕉在线视频 | 久久精品国产亚洲 | 91久久亚洲精品一区二区 | 日韩欧美国产中文 | 精品国产一二三区 | 91大片 | 国产成人精品aaaa视频一区 | 老司机福利深夜亚洲入口 |