【问题标题】:hadoop sqoop load csv file into mysqlhadoop sqoop 将csv文件加载到mysql中
【发布时间】:2015-08-24 14:57:54
【问题描述】:

我正在学习 hadoop sqoop。我正在开发一个 hortonworks 沙箱(单节点的 hadoop 虚拟机:http://hortonworks.com/products/hortonworks-sandbox/#install)。

我正在尝试通过 sqoop 将 csv 文件加载到 mysql 表中。我在其中创建了一个数据库航班信息和一个表天气。我在 hive 中创建了一个名为 sqoop_tmp 的表,其中包含该 csv 文件的文件位置。

我使用以下命令将 csv 加载到 mysql 中:

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

这是错误信息:

更新:@z-1 我试过你的代码,它返回了一些不同的东西

【问题讨论】:

    标签: hadoop sqoop


    【解决方案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 -u root -P登录MySQL

    2. mysql> GRANT all PRIVILEGES on filghtinfo.* to 'root'@'localhost' IDENTIFIED BY 'password'

      注意:这里设置的密码应该是从sqoop使用的。

    【讨论】:

    • 在 1) 我在 mysql shell 下尝试了 $ mysqladmin -u root password "newpassword" 和 $ mysqladmin -u root password mysql-root-password,它说 sql 语法错误。
    • 我想如果密码已经设置好了。不允许使用上述命令。如果您不确定 root 的密码是什么,请尝试$mysql_secure_installation 重置密码。
    • 我没有做 1) 2)3),只是用用户名 root 运行 sqoop 语句,然后提示输入密码,我用谷歌搜索,有人说 mysql 它应该是 root 或空,我试了空,它的工作原理!
    • 太棒了。上面的命令展示了如何设置一个 root 密码并使用这个 root 密码来对付这个 sqoop。我只是错过了默认值为空并使用它 sqoop。
    • 你终于明白了。超级.. :)
    【解决方案2】:

    用mysql的用户名和密码试试

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

    注意 - 用户应该有权限。

    【讨论】:

      【解决方案3】:

      试试这个:

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

      你有–- 而不是--。这两个不一样。

      【讨论】:

      • 我添加了一个屏幕截图。您的建议是正确的,但还有另一个错误(请参阅屏幕截图)。谢谢。
      • 这看起来像是 mysql 服务器的身份验证问题。如何找到用户名和密码?我可以在hadoop shell下输入mysql进入mysql shell,它从来没有要求用户名和密码。
      • 查看@Avinash 的回答。您需要提供用户名和密码
      猜你喜欢
      • 2023-04-01
      • 2015-11-27
      • 2016-04-17
      • 2014-01-19
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2018-01-01
      相关资源
      最近更新 更多