問題1:java
從mysql數據庫中導入到hive中能夠執行:mysql
sqoop import --connect jdbc:mysql://localhost/gamewave --username root --password 123456 --table log --hive-import -m 1sql
其中-m 1 參數表明的含義是使用多少個並行,這個參數的值是1,說明沒有開啓並行功能。數據庫
將m參數的數值調爲5或者更大,Sqoop就會開啓5個進程,同時進行數據的導入操做。apache
注意, 若是報如下錯誤:服務器
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:167) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1556) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162) Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
這是由於在並行導入,集羣中的其餘節點並無mysql的訪問權限(設置爲%也不行, 須要在mysql中x顯式指定IP),執行以下命令:app
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'192.168.64.16' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
若是你的mysql不能顯式指定IP,好比咱們公司服務器是用的阿里雲的rds,就只有把其餘節點的ip加入白名單。oop
問題2: 阿里雲
在同步過程當中,若是不加其餘參數,導入的數據默認的列分隔符是'\001',默認的行分隔符是'\n'。這樣問題就來了,若是導入的數據中有'\n',hive會認爲一行已經結束,後面的數據被分割成下一行,並且會出現數據不一致的狀況。spa
Sqoop也指定了參數 --fields-terminated-by和 --lines-terminated-by來自定義行分隔符和列分隔符。可是目前行分隔符只支持'\n', 因此該方法行不通.
查看幫助文檔後發現有以下2個參數:
--hive-drop-import-delims |
Drops \n, \r, and \01 from string fields when importing to Hive. |
--hive-delims-replacement |
Replace \n, \r, and \01 from string fields with user defined string when importing to Hive. |
所以加上這2個參數來把導入數據中包含的hive默認的分隔符去掉或替換。
sqoop import --connect jdbc:mysql://100.99.74.222:3306/fmcm_cms --username thecover --password Thecover_2016 --table fm_pgc_news --fields-terminated-by '\t' --hive-import --hive-database fmcm --create-hive-table --hive-delims-replacement ' '