大數據 - 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. docker鏡像push報錯2. angular.js - angular內容過長展開收起效果3. angular.js - angularjs的自定義過濾器如何給文字加顏色?4. python 怎樣用pickle保存類的實例?5. python的前景到底有大?如果不考慮數據挖掘,機器學習這塊?6. MySQL中無法修改字段名的疑問7. javascript - 微信小程序限制加載個數8. 大家好,請問在python腳本中怎么用virtualenv激活指定的環境?9. linux - 升級到Python3.6后GDB無法正常運行?10. 并發模型 - python將進程池放在裝飾器里為什么不生效也沒報錯
