校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > sqoop 實現(xiàn)將postgresql表導入hive表

sqoop 實現(xiàn)將postgresql表導入hive表

熱門標簽:漯河外呼電話系統(tǒng) 美容工作室地圖標注 合肥公司外呼系統(tǒng)運營商 地圖標注和圖片名稱的區(qū)別 打電話智能電銷機器人授權(quán) 辦公外呼電話系統(tǒng) 海豐有多少商家沒有地圖標注 重慶自動外呼系統(tǒng)定制 外呼調(diào)研系統(tǒng)

使用sqoop導入數(shù)據(jù)至hive常用語句

直接導入hive表

sqoop import 
--connect jdbc:postgresql://ip/db_name
--username user_name 
--table table_name 
--hive-import -m 5 

內(nèi)部執(zhí)行實際分三部,1.將數(shù)據(jù)導入hdfs(可在hdfs上找到相應目錄),2.創(chuàng)建hive表名相同的表,3,將hdfs上數(shù)據(jù)傳入hive表中

sqoop根據(jù)postgresql表創(chuàng)建hive表

sqoop create-hive-table 
--connect jdbc:postgresql://ip/db_name 
--username user_name 
--table table_name 
--hive-table hive_table_name
( --hive-partition-key partition_name若需要分區(qū)則加入分區(qū)名稱) 

導入hive已經(jīng)創(chuàng)建好的表中

sqoop import 
--connect jdbc:postgresql://ip/db_name 
--username user_name 
--table table_name 
--hive-import -m 5 
--hive-table hive_table_name 
(--hive-partition-key partition_name --hive-partition-value partititon_value);

使用query導入hive表

sqoop import 
--connect jdbc:postgresql://ip/db_name 
--username user_name 
--query "select ,* from retail_tb_order where \$CONDITIONS" 
--hive-import -m 5 
--hive-table hive_table_name 
(--hive-partition-key partition_name --hive-partition-value partititon_value); 

注意:$CONDITIONS條件必須有,query子句若用雙引號,則$CONDITIONS需要使用\轉(zhuǎn)義,若使用單引號,則不需要轉(zhuǎn)義。

遇到問題

若需要在導入hive數(shù)據(jù)表的前提下,再添加在原有關(guān)系型數(shù)據(jù)庫中沒有的一列數(shù)據(jù)如何解決。

首先,我們想到的是添加一個partition可很方便的添加“一列”數(shù)據(jù),partition的使用很類似普通一列,常用的sql執(zhí)行是沒有問題的。

其次,想到在query的sql中添加一個常量或者一個變量,例如:”select 'hello',* from retail_tb_order where \$CONDITIONS“,執(zhí)行后會報異常

12/08/28 14:41:31 INFO tool.CodeGenTool: Beginning code generation 
12/08/28 14:41:31 INFO manager.SqlManager: Executing SQL statement: select 'hello',* from retail_tb_order where (1 = 0) 
12/08/28 14:41:32 INFO manager.SqlManager: Executing SQL statement: select 'hello',* from retail_tb_order where (1 = 0) 
12/08/28 14:41:32 ERROR orm.ClassWriter: Cannot resolve SQL type 1111 
12/08/28 14:41:32 ERROR orm.ClassWriter: Cannot resolve SQL type 1111 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_ 
12/08/28 14:41:32 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException 
java.lang.NullPointerException 
 at org.apache.sqoop.orm.ClassWriter.parseNullVal(ClassWriter.java:900) 
 at org.apache.sqoop.orm.ClassWriter.parseColumn(ClassWriter.java:925) 
 at org.apache.sqoop.orm.ClassWriter.generateParser(ClassWriter.java:999) 
 at org.apache.sqoop.orm.ClassWriter.generateClassForColumns(ClassWriter.java:1314) 
 at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1138) 
 at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:82) 
 at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:367) 
 at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:453) 
 at org.apache.sqoop.Sqoop.run(Sqoop.java:145) 
 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
 at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181) 
 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220) 
 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
 at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 
 at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57) 

該問題出現(xiàn)原因是sqoop ClassWriter類會在postgresql表中解析sql中的所有列,當解析常量'hello'時,數(shù)據(jù)庫沒有該列也就找不到相應的數(shù)據(jù)類型。

若要解決該問題應該需修改ClassWriter源碼。

補充:使用Sqoop,最終導入到hive中的數(shù)據(jù)和原數(shù)據(jù)庫中數(shù)據(jù)不一致解決辦法

Sqoop是一款開源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進行數(shù)據(jù)的傳遞,可以將一個關(guān)系型數(shù)據(jù)庫(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導進到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導進到關(guān)系型數(shù)據(jù)庫中。

1.問題背景  

使用Sqoop把oracle數(shù)據(jù)庫中的一張表,這里假定為student,當中的數(shù)據(jù)導入到hdfs中,然后再創(chuàng)建hive的external表,location到剛才保存到hdfs中數(shù)據(jù)的位置。最后發(fā)現(xiàn)對hive中表特定條件進行count時結(jié)果和oracle中結(jié)果不一致。

1.1 導入數(shù)據(jù)到hdfs中/user/hadoop/student路徑下

sqoop import --connect "jdbc:oracle:thin:@//localhost:1521/student" --password "***" --username "***" --query "select * from student where name='zhangsan' and class_id='003' and \$CONDITIONS" --target-dir "/user/hadoop/student" --verbose -m 1

這個時候hdfs上/user/hadoop/student下就保存了從oracle上導入的表數(shù)據(jù)。

表數(shù)據(jù)在hdfs上是如何存儲的呢?注意這一點,造成了最后產(chǎn)生結(jié)果不一致的錯誤。

我們來看一看在hdfs上數(shù)據(jù)是如何存儲的。我們運行hadoop fs -cat /user/hadoop/student/part-m-00000,可以看到原來字段與字段之間都用‘,'分隔開,這是sqoop默認的,這時候,如果一個字段值當中包含‘,',再向hive中插入數(shù)據(jù)時分隔就會出錯。因為hive也是用‘,'分隔的。

2.分析問題  

對hive中表select count(*) from student的結(jié)果和oracle中select count(*) from studeng的結(jié)果進行比較,發(fā)現(xiàn)條數(shù)是一樣的,說明沒有少load數(shù)據(jù)。那為什么對特定條件結(jié)果就會不一致,而且hive中條數(shù)比oracle中少。也就是同時運行select count(*) from student where class_id='003'

最后,發(fā)現(xiàn)hive用逗號分隔數(shù)據(jù)時,有幾條數(shù)據(jù)字段內(nèi)值包含有逗號,所以字段與值對應起來就亂套了,所以得不到正確結(jié)果。

我們建議用‘\001'來進行sqoop 導入數(shù)據(jù)時的 分割。也就是--fields-terminated-by char>參數(shù)。

參考:http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_large_objects

最后優(yōu)化后的sqoop語句為:

sqoop import --connect "jdbc:oracle:thin:@//localhost:1521/student" --password "***" --username "***" --query "select * from student where name='zhangsan' and class_id='003' and \$CONDITIONS" --target-dir "/user/hadoop/student" --fields-terminated-by "\001" --verbose -m 1

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 在Hadoop集群環(huán)境中為MySQL安裝配置Sqoop的教程
  • sqoop export導出 map100% reduce0% 卡住的多種原因及解決
  • 解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題
  • sqoop讀取postgresql數(shù)據(jù)庫表格導入到hdfs中的實現(xiàn)
  • 解決sqoop import 導入到hive后數(shù)據(jù)量變多的問題
  • 使用shell腳本執(zhí)行hive、sqoop命令的方法
  • Sqoop的安裝與使用詳細教程

標簽:衡陽 來賓 蚌埠 晉城 烏海 錦州 珠海 株洲

巨人網(wǎng)絡通訊聲明:本文標題《sqoop 實現(xiàn)將postgresql表導入hive表》,本文關(guān)鍵詞  sqoop,實,現(xiàn)將,postgresql,表,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sqoop 實現(xiàn)將postgresql表導入hive表》相關(guān)的同類信息!
  • 本頁收集關(guān)于sqoop 實現(xiàn)將postgresql表導入hive表的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91精品国产乱码| 91啪亚洲精品| 日韩美女视频在线| 欧美亚洲高清一区二区三区不卡| 韩国午夜理伦三级不卡影院| 天天综合日日夜夜精品| 亚洲国产综合在线| 亚洲精品视频在线观看免费| 国产精品成人一区二区三区夜夜夜 | 久久99国产精品麻豆| 日本亚洲最大的色成网站www| 亚洲精品你懂的| 亚洲一区二区精品视频| 亚洲一区二区在线免费观看视频| 亚洲欧美激情视频在线观看一区二区三区| 亚洲国产成人午夜在线一区| 国产精品欧美一区喷水| 国产精品久久久久国产精品日日| 国产精品网站一区| 伊人婷婷欧美激情| 午夜精品一区二区三区免费视频| 日韩精品每日更新| 国内精品免费在线观看| 成人app网站| 欧美三级中文字幕在线观看| 日韩一区二区在线看| 日韩一区二区三区在线| 欧美精品一区二区在线观看| 日本一区二区在线不卡| 综合亚洲深深色噜噜狠狠网站| 亚洲免费高清视频在线| 天涯成人国产亚洲精品一区av| 国产一区二区主播在线| 一本到不卡免费一区二区| 欧美另类z0zxhd电影| 久久亚洲捆绑美女| 亚洲男人的天堂在线aⅴ视频| 亚洲大片免费看| 国产一区二区三区电影在线观看 | 在线亚洲一区观看| 欧美人妇做爰xxxⅹ性高电影| 91精品久久久久久久91蜜桃| 欧美国产精品一区二区| 亚洲成a人片在线不卡一二三区| 久久精品国产秦先生| 91视频.com| 欧美不卡在线视频| 一区二区三区四区在线播放| 狠狠久久亚洲欧美| 欧美日韩在线播| 中文字幕一区视频| 国产一区在线不卡| 欧美久久久影院| 综合久久一区二区三区| 久久精品国产亚洲一区二区三区| 成人免费毛片app| 日韩精品在线网站| 亚洲成人动漫av| 99久久久无码国产精品| 日韩免费视频线观看| 亚洲黄色性网站| 国产91清纯白嫩初高中在线观看| 欧美日韩国产综合视频在线观看| 国产精品入口麻豆九色| 国产一区二区三区在线观看精品| 欧美日韩午夜精品| 一区二区三区在线不卡| 国产成人综合在线播放| 日韩一级免费一区| 亚洲va韩国va欧美va精品| 91麻豆精东视频| 国产精品毛片大码女人| 国产91对白在线观看九色| 日韩三级av在线播放| 午夜激情久久久| 欧美性大战久久| 亚洲777理论| 欧美精品v日韩精品v韩国精品v| 一区二区欧美在线观看| 99久久er热在这里只有精品66| 国产午夜精品福利| 激情图片小说一区| 久久久久高清精品| 国产激情视频一区二区在线观看| 26uuu成人网一区二区三区| 日本在线不卡视频| 日韩欧美精品在线| 狠狠狠色丁香婷婷综合久久五月| xvideos.蜜桃一区二区| 国产精品一品二品| 国产精品青草综合久久久久99| 国产一区二区调教| 国产精品色婷婷久久58| 9人人澡人人爽人人精品| 国产精品乱人伦中文| 不卡一区中文字幕| 亚洲欧美日本在线| 在线看日韩精品电影| 亚洲国产一区二区视频| 欧美影院一区二区三区| 天堂久久久久va久久久久| 91精品国产91综合久久蜜臀| 美女脱光内衣内裤视频久久影院| 精品99一区二区| av欧美精品.com| 亚洲一区二区三区免费视频| 欧美日韩在线不卡| 国产在线一区观看| 亚洲色图视频网站| 欧美日韩黄色影视| 国产成人精品午夜视频免费| 亚洲欧美日韩国产综合在线 | 国内欧美视频一区二区| 久久久久久久久久电影| 一本一道综合狠狠老| 天堂在线一区二区| 久久精品水蜜桃av综合天堂| 91免费国产在线| 蜜乳av一区二区三区| 国产精品日产欧美久久久久| 91蜜桃在线观看| 久久成人麻豆午夜电影| 国产精品国产三级国产aⅴ中文| 色诱视频网站一区| 久久99精品久久久久| 中文字幕一区二区三区蜜月| 91精品国产色综合久久不卡蜜臀 | 色激情天天射综合网| 国产制服丝袜一区| 亚欧色一区w666天堂| 亚洲精品在线观| 精品视频1区2区3区| 成人免费观看av| 蜜乳av一区二区| 亚洲1区2区3区视频| 国产精品久久综合| 91麻豆精品国产91久久久久久久久| av一二三不卡影片| 国产成人三级在线观看| 奇米精品一区二区三区四区| 亚洲精品高清视频在线观看| 久久尤物电影视频在线观看| 欧美日高清视频| 色噜噜久久综合| www.在线欧美| 国产精品中文欧美| 日韩二区三区在线观看| 亚洲久草在线视频| 国产精品伦理在线| 欧美激情一区二区在线| 精品少妇一区二区三区| 欧美一区二区久久| 国产成人在线观看免费网站| 日韩高清不卡一区| 日本成人在线视频网站| 亚洲午夜精品一区二区三区他趣| 国产欧美日本一区视频| 久久精品夜色噜噜亚洲aⅴ| 精品女同一区二区| 欧美成人国产一区二区| 日韩一区二区三区三四区视频在线观看| 91啪九色porn原创视频在线观看| 成人毛片老司机大片| 国产成人在线视频免费播放| 国产一区91精品张津瑜| 狠狠色狠狠色综合系列| 九色综合国产一区二区三区| 久久精品国产第一区二区三区| 日本成人超碰在线观看| 蜜乳av一区二区三区| 精品午夜一区二区三区在线观看| 欧美国产1区2区| 不卡一卡二卡三乱码免费网站| 午夜精品福利视频网站| 亚洲精品成a人| 国产精品免费视频观看| 欧美日韩国产不卡| 亚洲成人免费电影| 精品国产髙清在线看国产毛片 | 欧美a一区二区| 亚洲欧美日韩国产中文在线| 中文av字幕一区| www激情久久| 中文文精品字幕一区二区| 这里是久久伊人| 日韩欧美另类在线| 欧美一区二区二区| 欧美三级中文字幕| 国产盗摄视频一区二区三区| 亚洲一区欧美一区| 欧美国产精品中文字幕| 欧美视频一区二区三区四区| www.亚洲色图| 日韩中文字幕区一区有砖一区| 成人欧美一区二区三区视频网页| 日韩亚洲欧美高清| 国产人成亚洲第一网站在线播放| www久久精品| 91麻豆精品国产91久久久更新时间| 91在线精品秘密一区二区|