日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2099 0

oracle數(shù)據(jù)庫(kù)中Date類(lèi)型倒入到hive中出現(xiàn) 時(shí)分秒截?cái)鄦?wèn)題 解決方案

1.問(wèn)題描述:

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

2.解決方案:

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

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

3)如果不設(shè)置--map-column-hive參數(shù),只設(shè)置--map-column-java 為java.sq..Timestamp,也可以實(shí)現(xiàn)數(shù)據(jù)精確到時(shí)分秒,只不過(guò)以string類(lèi)型保存到列hive中。 事實(shí)上,在我實(shí)驗(yàn)后,發(fā)現(xiàn)如果指定--mapcolumn-hive參數(shù)為timestamp,在java中使用對(duì)應(yīng)的時(shí)間where比較條件時(shí),無(wú)法查出數(shù)據(jù),反而,指定--map-column-hive參數(shù)為string,卻能夠在hive中和java代碼中都能夠使用時(shí)間列參與查詢(xún)。

?

3.參考說(shuō)明:

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ù)說(shuō)明

hive languageManual: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-timestamp ?查看hive支持的時(shí)間類(lèi)型說(shuō)明

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

hive開(kāi)啟行轉(zhuǎn)列功能:
> set hive.cli.print.header=true; // 打印列名
> set hive.cli.print.row.to.vertical=true; // 開(kāi)啟行轉(zhuǎn)列功能, 前提必須開(kāi)啟打印列名功能
> 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)、列類(lèi)型

> desc TableName;

sqoop 從oracle導(dǎo)數(shù)據(jù)到hive中,date型數(shù)據(jù)時(shí)分秒截?cái)鄦?wèn)題


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 巴林右旗| 葵青区| 克什克腾旗| 龙南县| 正安县| 绥棱县| 万山特区| 塔河县| 大同市| 和龙市| 桓台县| 连州市| 金堂县| 漳平市| 巴彦县| 轮台县| 延长县| 巴南区| 清水河县| 静乐县| 澄迈县| 湘潭市| 阿拉善左旗| 高碑店市| 泽库县| 鸡东县| 嘉善县| 清水县| 龙口市| 德兴市| 勐海县| 桓仁| 庐江县| 东安县| 乐昌市| 象州县| 桃江县| 封开县| 荆门市| 福建省| 怀安县|