大數據 - 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. javascript - js 寫一個正則 提取文本中的數據2. javascript - 為什么我的vue里的router-link不起作用3. javascript - js一個小的算法問題,找個好一點的答案。4. javascript - vue子路由匹配渲染到頂級視圖層問題5. 算法 - python 給定一個正整數a和一個包含任意個正整數的 列表 b,求所有<=a 的加法組合6. javascript - 游戲里物體角色層次渲染邏輯和代碼怎么寫才好?7. javascript - 發現個奇怪的問題,寫的css動畫當我把標簽頁收起時動畫自動暫停了8. javascript - 新組成的數組打印出來出現問題,里面有對象,但長度為空9. javascript - 關于Lazyload遇到的問題10. javascript - 如果根據參數給table中的tr綁定不同事件
