2015-08-24 40 views
1

我在學習hadoop sqoop。我正在研究hortonworks沙箱(單節點hadoop虛擬機:http://hortonworks.com/products/hortonworks-sandbox/#install)。hadoop sqoop將csv文件加載到mysql中

我想通過sqoop加載一個csv文件到一個mysql表中。我創建了一個數據庫flightinfo和一個表格天氣。我在配置單元中創建了一個名爲sqoop_tmp的表格,其中包含該csv文件的文件位置。

我用下面的命令將CSV加載到MySQL:

sqoop export --connect jdbc:mysql://localhost/flightinfo –-table weather –-export-dir /apps/hive/warehouse/sqoop_tmp 

以下是錯誤消息: enter image description here

更新:@ Z-1 我想你的代碼,並返回不同的東西 enter image description here

回答

1

您必須提供MySQL的用戶名和密碼,並且必須具有訪問數據庫的權限。

它看起來像你做了全新安裝的mysql,並沒有配置root帳戶以使用root密碼進行安全保護。

你可以做,使用以下步驟:

  1. $ mysqladmin -u root password "newpassword" 例如$ mysqladmin -u root password mysql-root-password
  2. 重啓MySQL守護進程。 $ sudo service mysqld restart$ sudo /etcinit.d/mysqld restart
  3. 使用$ mysql -u root -P登錄到MySQL,並在出現提示時輸入密碼。

如果您以root用戶身份創建數據庫。現在您可以發出以下sqoop命令將數據從hdfs導出到sqoop數據庫。

$ sqoop export --connect jdbc:mysql://localhost/flightinfo --username root -P --table weather --export-dir /apps/hive/warehouse/sqoop_tmp

仍面臨權限問題?用戶訪問數據庫的權限是問題所在。

然後,您應該可以通過使用以下步驟授予權限來解決問題。

  1. 登錄到MySQL使用$ mysql -u root -P
  2. mysql> GRANT all PRIVILEGES on filghtinfo.* to 'root'@'localhost' IDENTIFIED BY 'password'

    注意:您在此處設置的密碼應該從sqoop使用。

+0

在1)我試過$ mysqladmin -u root密碼「newpassword」和$ mysqladmin -u root密碼mysql-root-password在mysql shell下,它說sql語法錯誤。 – thotwielder

+0

我想如果密碼已經設置好了。上述命令是不允許的。如果您不確定root用戶的密碼,請嘗試'$ mysql_secure_installation'來重置密碼。 – Avinash

+0

我沒有做1)2)3),只是用用戶名root運行sqoop語句,然後提示輸入密碼,我用google搜索了一下,有人說mysql對它應該是root或者空的,我嘗試了空,並且它可以工作! – thotwielder

0

試試這個:

sqoop export --connect jdbc:mysql://localhost/flightinfo --table weather --export-dir /apps/hive/warehouse/sqoop_tmp 

您有–-不是--。這兩個不一樣。

+0

我添加了一個截圖。您的建議是正確的,但還有其他錯誤(請參閱屏幕截圖)。謝謝。 – thotwielder

+0

它看起來像MySQL服務器認證問題。我如何找到用戶名和密碼?我只需在hadoop shell下鍵入mysql即可進入mysql shell,它從不要求輸入用戶名或密碼。 – thotwielder

+0

查看@ Avinash的答案。你需要提供一個用戶名和密碼 – LuckyGuess

1

嘗試與MySQL

sqoop export --connect jdbc:mysql://localhost/flightinfo --table weather --export-dir /apps/hive/warehouse/sqoop_tmp --username SomeUser -P 

注意的用戶名和密碼 - 用戶應具有的權限。