大數據 - 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. datetime - Python如何獲取當前時間2. javascript - 移動端自適應3. css3 - 沒明白盒子的height隨width的變化這段css是怎樣實現的?4. javascript - 在 model里定義的 引用表模型時,model為undefined。5. atom開始輸入!然后按tab只有空格出現沒有html格式出現6. python3.x - c++調用python37. java - 根據月份查詢多個表里的內容怎么實現好?8. apache - 想把之前寫的單機版 windows 軟件改成網絡版,讓每個用戶可以注冊并登錄。類似 qq 的登陸,怎么架設服務器呢?9. css3 - 這個右下角折角用css怎么畫出來?10. android - 課程表點擊后浮動后邊透明可以左右滑動的界面是什么?
