欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

sqoop 從oracle導(dǎo)數(shù)據(jù)到hive中,date型數(shù)據(jù)時分

系統(tǒng) 1862 0

oracle數(shù)據(jù)庫中Date類型倒入到hive中出現(xiàn) 時分秒截斷問題 解決方案

1.問題描述:

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

2.解決方案:

? ? 在用sqoop倒入數(shù)據(jù)表是,添加--map-column-hive 和--map-column-java參數(shù),來改變數(shù)據(jù)表列的默認映射類型(默認情況下sqoop倒入hive中Date類型會被映射成String),將Date列映射成Timestamp類型,在我的問題中我是通過sqoop創(chuàng)建job,進行數(shù)據(jù)表按時間增量倒入的,PASSTIME列的數(shù)據(jù)類型是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)紅色字體標(biāo)注的兩個參數(shù)用來改變列的映射類型,藍色字體標(biāo)注的是數(shù)據(jù)類型,java.sql.Timestamp要帶包名寫全,否則可能會出錯。

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

3)如果不設(shè)置--map-column-hive參數(shù),只設(shè)置--map-column-java 為java.sq..Timestamp,也可以實現(xiàn)數(shù)據(jù)精確到時分秒,只不過以string類型保存到列hive中。 事實上,在我實驗后,發(fā)現(xiàn)如果指定--mapcolumn-hive參數(shù)為timestamp,在java中使用對應(yīng)的時間where比較條件時,無法查出數(shù)據(jù),反而,指定--map-column-hive參數(shù)為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參數(shù)說明

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

hive日期函數(shù)
http://athenaxu.blog.163.com/blog/static/2057220392014025332775/
hive數(shù)據(jù)類型轉(zhuǎn)換
http://www.iteblog.com/archives/892

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

hive查看數(shù)據(jù)表結(jié)構(gòu)、列類型

> desc TableName;

sqoop 從oracle導(dǎo)數(shù)據(jù)到hive中,date型數(shù)據(jù)時分秒截斷問題


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区四区国产精品视频 | av黄色在线 | 欧美日韩综合一区 | 手机在线一区二区三区 | 欧美成人午夜 | 国产激情视频 | 玖玖国产 | 欧美3级 | 国产啪| 青草视频网址 | 久久综合婷婷香五月 | 免费成人福利视频 | 亚洲精品电影 | 国产91久久精品一区二区 | 波多野结衣一区二区三区 | 中文一区| 久久免费看少妇高潮A片JA小说 | 666sao| 欧美精品欧美精品系列 | 日本一区二区三区四区在线观看 | 四虎tv在线观看884aa | 日韩中文字幕在线看 | 久久婷婷色香五月综合激情 | 日本精品久久无码影院 | 自拍 第一页 | 91精品国产777在线观看 | 欧美日韩精品一区二区三区在线观看 | 日韩欧美一区二区三区不卡在线 | 天天做天天爱天天爽天天综合 | 亚州老熟女A片AV色欲小说 | 欧美乱码精品一区 | 亚洲美女亚洲精品久久久久 | 欧美日韩国产三级 | 最新国产视频 | 欧区一欧区二欧区三史无前例 | 国产野花视频天堂视频免费 | 无码AV免费一区二区三区A片 | 欧洲精品久久久 | 青青久操视频 | 日本高清乱理伦片中文字幕啊 | 污污视频免费网站 |