前面介紹了sqoop1.4.6的 如何將mysql數據導入Hadoop之Sqoop安裝,下面就介紹兩者間的數據互通的簡單使用命令。
顯示mysql數據庫的信息,一般sqoop安裝測試用
sqoop list-databases --connect jdbc:mysql://192.168.2.101:3306/ --username root --password root
顯示數據庫里所有表:
sqoop list-tables --connectjdbc:mysql://192.168.2.101:3306/FlowDB --username root -password root
mysql導入到hdfs中
sqoop import --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --fields-terminated-by '\t' -m 1
sqoop ##sqoop命令
import ##表示導入
--connect jdbc:mysql://ip:3306/sqoop ##告訴jdbc,連接mysql的url
--username root ##連接mysql的用戶名
--password admin ##連接mysql的密碼
--table aa ##從mysql導出的表名稱
--fields-terminated-by '\t' ##指定輸出文件中的行的字段分隔符
--target-dir/user/hadoop/databases/ssa/fin_cashier_order
-m 1 ##復制過程使用1個map作業
若是不寫--target-dir 則默認是hdfs上的user/username/tablename 路徑
如果重復執行,會提示目錄已經存在,可以手動刪除
該命令執行結束后,觀察hdfs的目錄/user/{USER_NAME},下面會有一個文件夾是aa,里面有個文件是part-m-00000。該文件的內容就是數據表aa的內容,字段之間是使用制表符分割的。
查看HDFS上的文件
hadoop fs -cat /user/jzyc/WorkTable/part-m-00000
hdfs導出到mysql中
把上一步導入到hdfs的數據導出到mysql中。我們已知使用制表符分隔的。那么,我們現在數據庫FlowDB中創建一個數據表叫做WorkTable_hdfs,里面有兩個字段。然后執行下面的命令
sqoop export --connect jdbc:mysql://192.168.2.101:3306/FlowDB --table WorkTable_hdfs --username root --password root --export-dir /user/jzyc/WorkTable/ --input-fields-terminated-by '\t'
sqoop導入視圖到hdfs
sqoop import --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --query 'SELECT * FROM view_WorkTable WHERE \$CONDITIONS' -m 1 target-dir /user/jzyc/WorkTable --delete-target-dir --fields-terminated-by ","
將數據從關系數據庫導入文件到hive表中,--query 語句使用
sqoop import --append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --query "SELECT ID,Classify,Name,ModelType,CreateDate,CreateUserID,DesignJSON,Status from WorkTable where \$CONDITIONS" -m 1 --target-dir /hive/warehouse/WorkTable --fields-terminated-by ","
將數據從關系數據庫導入文件到hive表中,--columns --where 語句使用
sqoop import --append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --columns "ID,Classify,Name,ModelType,CreateDate,CreateUserID" --where "Classify = 1" -m 1 --target-dir /hive/warehouse/WorkTable2 --fields-terminated-by ","
注意:--target-dir/hive/warehouse/WorkTable2 可以用 --hive-import --hive-table WorkTable2 進行替換
從上面的信息可以看到sqoop還是走的hadoop的M/R引擎。
以上只是一些經過驗證通過的簡單的示例,更復雜的有待后續補充。