我有一个使用 WAMP 服务器访问的 Web 应用程序,该服务器询问用户当前位置并获取他的纬度和经度。
这些纬度和经度值存储在 mysql 数据库的表中。
现在我需要处理这个纬度和经度值,以便为用户提供他/她最近的位置。
所以我想将mysql数据库中的这些经纬度值导入到hadoop中。
我安装了cloudera并使用virtual box启动了它。 现在,当我尝试使用这样的查询导入 mysql 表中的值时,在 cloudera 命令提示符中
$ bin/sqoop import --connect jdbc:mysql://192.168.56.1/testDb --table latlog --username root -P -m 1
其中 testDb 是我的数据库名称,latlog 是我的表名称
它显示这样的错误:
Error executing statement: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
如何将本地机器的mysql数据库中的表加载到虚拟机(cloudera)中的hadoop?
我尝试了网上提供的很多解决方案,但无法解决它。任何帮助将不胜感激..
最佳答案
将数据从 MySQL 导入到 Cloudera VM 的分步过程如下:
- 下载mysql-connector-java-5.1.26-bin.jar并将其保存在Cloudera的桌面中
使用命令将此 jar 文件复制到 sqoop 库中
sudo cp/home/cloudera/Desktop/mysql-connector-java-5.1.26-bin.jar/usr/lib/sqoop/lib
现在使用命令
cd/usr/lib/sqoop
将当前工作目录更改为 sqoop以系统管理员身份打开命令提示符,并通过运行
ipconfig
命令了解系统的 IPV4 地址,例如:192.168.56.1现在在你的MySQL中使用命令发出所有权限
将.上的所有权限授予root@192.168.56.1,由“root”通过授予选项识别;
现在在cloudera命令行中输入此命令来导入数据
bin/sqoop import --connect jdbc:mysql://192.168.56.1/testDb --table latlog --username root -P -m 1
其中 testDb 是数据库名称,latlog 是表名称。然后它要求输入密码。输入 root 作为密码。现在使用 Sqoop 将数据从 MySQL 导入到 cloudera(Hadoop)要查看导入的数据,请输入命令
hadoop dfs -ls -R latlog
它显示了存储导入数据的文件。要查看该文件中的内容,请输入命令
hadoop dfs -cat latlog/part-m-00000
打印 latlog 表中的所有数据。
谢谢..
关于mysql - 如何将mysql表中的数据加载到cloudera中(使用virtual box启动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799408/