大數據 - Sqoop從本地MySQL導入到Hive為什么要求Sqoop一定要在HDFS中
問題描述
問題來源是這樣,我使用sqoop向Hive中導入mysql的表
sqoop import --connect jdbc:mysql://127.0.0.1:3306/employees_db --table titles --username root -P --hive-import -- --default-character-set=utf-8
然后發生了報錯:
16/08/10 22:08:36 ERROR tool.ImportTool: Encountered IOException running import job: java.io.FileNotFoundException: File does not exist: hdfs://192.168.1.128:9000/usr/local/sqoop/lib/mysql-connector-java-5.1.39-bin.jar
于是我Google了一下,發現清一色的回答均為在hdfs中創建一個/usr/local/sqoop,然后將本地的sqoopput上去,即
[root@Master local]# hadoop dfs -put /usr/local/sqoop /usr/localDEPRECATED: Use of this script to execute hdfs command is deprecated.Instead use the hdfs command for it.16/08/10 22:23:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable[root@Master local]# hadoop dfs -ls /usr/localDEPRECATED: Use of this script to execute hdfs command is deprecated.Instead use the hdfs command for it.16/08/10 22:25:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableFound 1 itemsdrwxr-xr-x - root supergroup 0 2016-08-10 22:25 /usr/local/sqoop
沒錯,這樣是成功解決了問題但是為什么會把sqoop存到hdfs中?我看到了有些人并不需要把sqoop移到hdfs中也能成功運行,是我哪里的配置出錯還是只能這么做?hdfs是分布式儲存應該是存數據文件,怎么會把一個程序存進去呢?這里令我很不解,希望能得到解答。
問題解答
回答1:關于這個問題,貌似找到了一個解釋,這里報錯是缺少hdfs://192.168.1.128:9000/usr/local/sqoop/lib/mysql-connector-java-5.1.39-bin.jar,所以我的理解就是并不是sqoop在HDFS上運行,而是sqoop的jar要放在HDFS上,所以我們只用把jar上傳到HDFS即可
相關文章:
1. python - Django有哪些成功項目?2. 實現bing搜索工具urlAPI提交3. Python從URL中提取域名4. python執行cmd命令,怎么讓他執行類似Ctrl+C效果將其結束命令?5. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)6. 關于mysql聯合查詢一對多的顯示結果問題7. node.js - windows10下的npm全局路徑的復原或者將npm徹底刪除?8. 數據庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。9. 直接打字符不可以嗎?>和>有區別嗎10. node.js - 微信小程序websocket連接問題
