大數據 - 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-compose中volumes的問題2. boot2docker無法啟動3. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””4. nignx - docker內nginx 80端口被占用5. java - SSH框架中寫分頁時service層中不能注入分頁類6. docker安裝后出現Cannot connect to the Docker daemon.7. javascript - mock.js可以存儲數據嗎8. golang - 用IDE看docker源碼時的小問題9. docker api 開發的端口怎么獲取?10. dockerfile - 為什么docker容器啟動不了?

網公網安備