sqoop安裝及其使用

sqoop簡介

sqoop是連接關係型數據庫和hadoop的橋樑,主要有兩個方面(導入和導出):

  • 將關係型數據庫的數據導入到Hadoop 及其相關的系統中,如 Hive和HBase

  • 將數據從Hadoop 系統裏抽取並導出到關係型數據庫

sqoop安裝

sqoop下載地址:Index of /dist/sqoop

下載完成後把sqoop進行解壓安裝並配置,在添加sqoop到環境變量,並將數據庫連接驅動拷貝到$SQOOP_HOME(sqoop安裝目錄)/lib裏

sqoop使用

把MySQL中的數據導入到HDFS上
sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --columns 'word,total' -m 1

指定輸出路徑、指定數據分隔符

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --keyWord --target-dir '/sqoop/td' --fields-terminated-by '\t'

指定Map數量 -m

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2

增加where條件, 注意:條件必須用引號引起來

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --where 'id>3' --target-dir '/sqoop/td2'
將MySQL上的數據導出到數據庫中
sqoop export --connect "jdbc:mysql://192.168.100.10:3306/mydatabase?" --username root --password 158758qwef --table stu_test --m 1 --export-dir /user/hadoop/keyWord --input-fields-terminated-by '\t' --columns="word,total"
把MySQL上的數據導入到Hive中

先把hive中lib目錄下的hive-common-2.3.7.jar包導入到sqoop安裝目錄下的lib中

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password password --table keyWord --hive-import --create-hive-table --fields-terminated-by "\t" -m 1 --target-dir test5

運行命令後進入到hive中可以看到創建了一個keyWord表

在這裏插入圖片描述

把Hive上的數據導出到MySQL中

運行如下命令

sqoop export --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password password --table keyWord2 --export-dir /user/hive/warehouse/keyword

到MySQL中可以select一下keyWord2表,可以看到數據已經導出到keyWord2表中(嚶嚶嚶不過沒指定分隔符,數據導出有點亂)
在這裏插入圖片描述

記些bug

  1. 在數據庫連接驅動拷貝到$SQOOP_HOME(sqoop安裝目錄)/lib裏之後仍然出現錯誤:Sqoop Could not load db driver class: com.mysql.jdbc.Driver。

原因是所用的sqoop版本不支持所用的MySQL JDBC驅動,可以換一個驅動試試

  1. 在把數據庫中的數據導入到HDFS時,發生錯誤:Error during import: No primary key could be found。

    解決方法有三,詳見:通過Sqoop將Oracle中表導入到HDFS時報錯Error during import: No primary key could be found

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章