Sqoop導入數據到HDFS中(大數據存儲系統)

環境準備:h15機器,mysql使用h15的,不用h17的mysql

配置hive的環境變量和hadoop的環境變量

注意:

(1)一定要配置HADOOP_HOME和HIVE_HOME

(2)和flume相似,要將sqoop放在active的namenode節點上


錯誤1:Error:?Could?not?find?or?load?main?class?org.apache.sqoop.Sqoop

解決:hadoop和sqoop的環境變量配置有問題

錯誤2:No?such?sqoop?tool:mport.?See?'sqoop?help'.

解決:import----->mport??單詞錯誤

錯誤3:

onnection.?Ensure?that?you?have?called?.close()?on?any?active?streaming?result?sets?before?attempting?more?queries. at?com.mysql.jdbc.SQLError.createSQLException(SQLError.java:914)

at?com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2181)

at?com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1542)

at?com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

at?com.mysql.jdbc.Connection.execSQL(Connection.java:3277)

at?com.mysql.jdbc.Connection.execSQL(Connection.java:3206)

at?com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)

at?com.mysql.jdbc.Connection.getMaxBytesPerChar(Connection.java:3673)

at?com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:482)

at?com.mysql.jdbc.ResultSetMetaData.getPrecision(ResultSetMetaData.java:443)

at?org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:286)

at?org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241)

at?org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227)

at?org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)

at?org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833)

at?org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645)

at?org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)

at?org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:64)

at?org.apache.sqoop.tool.ExportTool.run(ExportTool.java:100)

at?org.apache.sqoop.Sqoop.run(Sqoop.java:143)

at?org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

at?org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)

at?org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)

at?org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)

at?org.apache.sqoop.Sqoop.main(Sqoop.java:236)

16/04/28?19:32:58?ERROR?tool.ExportTool:?Encountered?IOException?running?export?job:?java.io.IOException:?No?columns?to?generate?for?ClassWriter

解決:mysql驅動包有問題導致,建議使用高版本的mysql驅動mysql-connector-java-5.1.31-bin.jar


1\上傳sqoop文件,解壓,配置sqoop的環境變量:SQOOP_HOME=/home/sqoop-1.4.6

查看是否安裝成功:#?sqoop?help

2\將mysql的數據庫驅動包:mysql-connector-java-5.1.18-bin.jar復制到h15的sqoop的目錄(/home/sqoop-1.4.6/lib)下

3\將mysql中的數據導到大數據存儲平臺(hdfs)的配置文件:

#vi?sqoop1(導入方式一:column方式只支持單表導入)


import

--connect

jdbc:mysql://h15:3306/result_db

--username

root

--password

1714

--table

dimension_platform

--columns

id,platform_name

--where(接條件)

1=1

--as-textfile

--delete-target-dir

--fetch-size

2

-m?(最大map任務數)

1

--target-dir

/sqoop/data

--null-string

''

4\在sqoop機器上執行以下命令進行測試:

#sqoop?--options-file?/opt/testsqoop/sqoop1?

然后查看該文件是否正常

#hdfs?dfs?-cat?/sqoop/data/part-m-00000


5\導入mysql數據庫中的數據到hive庫中(如果要導入hbase,那么只需要整合hbase即可)

#vi?sqoop2(導入方式二:query方式支持多表導入)


import

--connect

jdbc:mysql://h15:3306/result_db

--username

root

--password

1714

--query

'?select?p.platform_name,u.new_install_users??from?stats_user?as?u?join??dimension_platform?p?

on?u.platform_dimension_id=p.id?where?p.id>0and?$CONDITIONS?'(必須要添加紅色字體,如果沒有where語句,則不用加)

--as-textfile

--delete-target-dir

--fetch-size

2

-m

1

--target-dir

/sqoop/data

--null-string

''

--hive-import

--hive-overwrite

--create-hive-table

--hive-table

t_test(hive會自動創建該表)


6\在h15上執行sqoop的命令,進行數據轉移

#sqoop?--options-file?/opt/testsqoop/option2?


在hive客戶端查看是否有數據

#select?*?from?t_test;



7\將hdfs上的數據導出到mysql數據庫中

(1)在h15的數據庫result_db中創建表t_sqoop

create?table?t_sqoop(

name?varchar(200),

num?int(11)

)

(2)編輯配置文件option3

#vi?option3(導出方式三:導出hdfs上的數據到mysql)


export

--connect

jdbc:mysql://h15/result_db

--username

root

--password

1714

--columns(導入到mysql表中的字段)

name,num

--export-dir

/test/test.txt

-m

1

--table(mysql中的表)

t_sqoop

--input-null-string

null

--fields-terminated-by(指定文件里內容的隔開符號)

','


(2)新建一個數據文件sqoop.txt

內容如下:

Tim,23

Tom,26

Marry,21


(3)在h15上執行上傳文件到hdfs上的命令

#hdfs?dfs?-mkdir?/test

#hdfs?dfs?-put?/opt/testsqoop/sqoop.txt??/test


(4)執行sqoop命令,將hdfs上的數據傳輸到mysql中

#sqoop?--options-file?/opt/testsqoop/option3


(5)進入mysql查看表t_sqoop中,是否已經有數據

#select?*?from?t_sqoop;




8\將hive上的數據導出到mysql數據庫中(測試不通過)

(1)列出mysql數據庫中的所有數據庫命令

??#??sqoop?list-databases?--connect?jdbc:mysql://h15:3306/?--username?root?--password?1714

(2)連接mysql并列出數據庫中的表命令

???#?sqoop?list-tables?--connect?jdbc:mysql://h15:3306/dg?--username?root?--password?1714

命令中的dg為mysql數據庫中的dg數據庫名稱??username?password分別為mysql數據庫的用戶密碼

(3)將關系型數據的表結構復制到hive中

#sqoop?create-hive-table?--connect?jdbc:mysql://h15:3306/dg?--table?t_test?--username?root?--password?1714 --hive-table?t_test

其中--table?username為mysql中的數據庫dg中的表???--hive-table?t_test為hive中新建的表名稱

create?table?t_test(

platform_name?varchar(50),

new_install_users?int(20)

)

(4)從關系數據庫導入文件到hive中#sqoop?import?--connect?jdbc:mysql://h15:3306/dg?--username?root?--password?1714 --table?t_test?--hive-import

(5)將hive中的表數據導入到mysql中

#sqoop?export?--connect?jdbc:mysql://h15:3306/dg?--username?root?--password?1714 ?--table?t_test?

--export-dir?/user/hive/warehouse/20160501?--input-fields-terminated-by?'\t'

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容