sqoop1.4.6命令使用(一)

  • #### 列出所有數據庫(可用於測試連接)
sqoop-list-databases --connect jdbc:mysql://test104:3306 --username root --password 123456
  • #### 列出所有表
sqoop-list-tables --connect jdbc:mysql://test104:3306/sqoop --username root --password 123456
  • 導出mysql表到hdfs

    其中的-D mapred.job.queue.name=lesson是用來指定yarn的執行隊列。
    –m 1用來指定map任務個數爲1。

sqoop import -D mapred.job.queue.name=lesson --connect jdbc:mysql://test104:3306/sqoop --username root --password 123456 --table test01 --m 1 --target-dir /my/user/sqoop
  • #### 導出mysql表全部數據到hive
mysql表
mysql> select * from mysql_hive;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | lb   |   18 |
|  2 | gy   |   17 |
|  3 | zf   |   16 |
+----+------+------+
3 rows in set (0.00 sec)
sqoop命令創建hive表
sqoop create-hive-table  --connect jdbc:mysql://test104:3306/sqoop_hive --table mysql_hive --hive-table mysql_hive  --username root --password 123456 
sqoop命令將mysql表中數據全部倒入hive(不需要先執行上一步)
sqoop import -D mapred.job.queue.name=lesson --connect jdbc:mysql://test104:3306/sqoop_hive --username root --password 123456 --table mysql_hive --m 1 --hive-import   --hive-database sqoop_hive --hive-overwrite   --hive-table mysql_hive 
hive表
hive (sqoop_hive)> show tables;
OK
mysql_hive
Time taken: 0.026 seconds, Fetched: 1 row(s)
hive (sqoop_hive)> select * from mysql_hive;
OK
1   lb  18
2   gy  17
3   zf  16
Time taken: 0.135 seconds, Fetched: 3 row(s)
可能出現問題:
- 直接執行報錯
 Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

 java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
解決:

在 /opt/behApache/conf/beh_env中添加:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_COMMON_HOME/share/hadoop/common:$HADOOP_COMMON_HOME/share/hadoop/common/lib:$HADOOP_HDFS_HOME/share/hadoop/hdfs:$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib:$HADOOP_YARN_HOME/share/hadoop/yarn:$HADOOP_YARN_HOME/share/hadoop/yarn/lib:$HIVE_HOME/lib/*
- 運行到下面步驟,直接退出。
17/03/07 16:31:35 INFO hive.HiveImport: Loading uploaded data into Hive

Logging initialized using configuration in jar:file:/opt/behApache/core/hive/lib/hive-common-1.1.0-cdh5.7.5.jar!/hive-log4j.properties
原因:jar包缺失
解決:

1.將sqoop-1.4.6-cdh5.7.5.jar導入$HIVE_HOME/lib目錄下

2.將sqoop-1.4.6-cdh5.7.5.jar和mysql-connector-java-5.1.30.jar導入$HADOOP_HOME/share/hadoop/common

3.確保hadoop集羣所有節點都正常運行

4.–hive-overwrite已經有了–create-hive-table 的功能,不能共存

正確運行:
17/03/08 14:23:28 INFO hive.HiveImport: Loading uploaded data into Hive
17/03/08 14:23:28 WARN conf.HiveConf: HiveConf of name hive.cli.print.row.to.vertical does not exist
17/03/08 14:23:28 WARN conf.HiveConf: HiveConf of name hive.files.umask.value does not exist
17/03/08 14:23:28 WARN conf.HiveConf: HiveConf of name hive.cli.print.row.to.vertical does not exist
17/03/08 14:23:28 WARN conf.HiveConf: HiveConf of name hive.files.umask.value does not exist

Logging initialized using configuration in file:/opt/behApache/core/hive/conf/hive-log4j.properties
OK
Time taken: 0.986 seconds
Loading data to table sqoop_hive.mysql_hive
Moved: 'viewfs://beh/my/user/hive/warehouse/sqoop_hive.db/mysql_hive/part-m-00000' to trash at: hdfs://behApache/user/hadoop/.Trash/Current
Table sqoop_hive.mysql_hive stats: [numFiles=1, numRows=0, totalSize=24, rawDataSize=0]
OK
Time taken: 0.803 seconds
  • #### 導出hive表全部數據到mysql

先清空mysql表

mysql> select * from mysql_hive
    -> ;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | lb   |   18 |
+----+------+------+
1 row in set (0.00 sec)

mysql> truncate mysql_hive;
Query OK, 0 rows affected (0.34 sec)
mysql> select * from mysql_hive;
Empty set (0.00 sec)

執行:

sqoop export -D mapred.job.queue.name=work --connect jdbc:mysql://test104:3306/sqoop_hive --username root  --password 123456 --table mysql_hive --export-dir /my/user/hive/warehouse/sqoop_hive.db/mysql_hive/  --input-fields-terminated-by '\001'

疑問:
日誌顯示如下

17/03/14 11:15:38 INFO mapreduce.Job:  map 0% reduce 0%
17/03/14 11:15:46 INFO mapreduce.Job:  map 100% reduce 0%
17/03/14 11:15:47 INFO mapreduce.Job: Job job_1488528773171_0081 failed with state FAILED due to: Task failed task_1488528773171_0081_m_000002
Job failed as tasks failed. failedMaps:1 failedReduces:0
----------------------------------------
17/03/14 11:15:47 INFO mapreduce.ExportJobBase: Transferred 487 bytes in 20.0146 seconds (24.3323 bytes/sec)
17/03/14 11:15:47 INFO mapreduce.ExportJobBase: Exported 1 records.
17/03/14 11:15:47 ERROR tool.ExportTool: Error during export: Export job failed!

顯示報錯,但Exported 1 records.表示導入成功

查看mysql表:

mysql> select * from mysql_hive;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | lb   |   18 |
+----+------+------+
1 row in set (0.00 sec)

發現有數據了。

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