无法使用 Sqoop 从 Mysql 导入 table
Unable to import the table from Mysql using Sqoop
我在 MySQL MySQL 的 demo_poc 数据库中的员工 table 中有 5 条记录
192.168.1.126 [机器 1]。
我想将数据导入
中的hive
192.168.1.129 [Machine-2] 使用 Sqoop。
我在 Machine-2 上安装了 sqoop 1.4.6。
我这样试过,
sqoop import --connect jdbc:mysql://192.168.1.126:3306/demo_poc
--username root --password root --table employee -m 10
--hive-import --hive-table demo_poc.address
这是我收到的错误,
16/04/11 16:28:20 INFO tool.CodeGenTool: Beginning code generation
16/04/11 16:28:21 ERROR manager.SqlManager: Error executing statement: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
16/04/11 16:28:21 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter
任何建议。
谢谢
您似乎无法与 MySQL 建立联系。
检查两件事。
MySQL 所在的机器 运行 可以访问吗?
从 sqoop 机器尝试 ping 192.168.1.126
命令。
检查 Mysql 端口。
这篇 question 将在这方面帮助您。
出现此错误的原因有很多。
你可以从这个开始,
- 当您的 MySQL 凭据也有误时,可能会发生此错误。使用机器 2 上 CLI 中 Sqoop 中使用的凭据连接到机器 2 上的 MySQL。检查确切的数据库、命令等。如果您无法执行此操作,则可能是与主机相关的权限问题MySQL 您在 Sqoop 命令中使用的用户。
sqoop-import --connect jdbc:mysql://192.168.1.126:3306/demo_poc --username root --P --table employee -m 1 --hive-import --hive-table demo_poc.employee
您提供的 IP 地址看起来像是在同一网络中。如果这两台机器在网络中,那么 ping 命令就可以工作。在我们输入 ping 'I.P of MYSQL' 之后,通信将建立。
MYSQL>将 . 上的所有权限授予 ''@'192.168.1.129'
MYSQL>将 . 上的所有权限授予 '%'@'192.168.1.129'
以上两个命令由管理员在 MYSQL 机器上执行。
- 你必须提到 --target-dir
for example : sqoop import --connect "mysql://192.168.1.126:3306/demo_poc "
--username root
--password "root"
--query "select column_name from table_name where $CONDITIONS"
--fields-terminated-by ',' --target-dir /user/.... -m 1 --delete-target-dir --as-parquetfile
我在 MySQL MySQL 的 demo_poc 数据库中的员工 table 中有 5 条记录
192.168.1.126 [机器 1]。
我想将数据导入
中的hive192.168.1.129 [Machine-2] 使用 Sqoop。
我在 Machine-2 上安装了 sqoop 1.4.6。
我这样试过,
sqoop import --connect jdbc:mysql://192.168.1.126:3306/demo_poc
--username root --password root --table employee -m 10
--hive-import --hive-table demo_poc.address
这是我收到的错误,
16/04/11 16:28:20 INFO tool.CodeGenTool: Beginning code generation
16/04/11 16:28:21 ERROR manager.SqlManager: Error executing statement: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
16/04/11 16:28:21 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter
任何建议。 谢谢
您似乎无法与 MySQL 建立联系。
检查两件事。
MySQL 所在的机器 运行 可以访问吗?
从 sqoop 机器尝试
ping 192.168.1.126
命令。检查 Mysql 端口。
这篇 question 将在这方面帮助您。
出现此错误的原因有很多。 你可以从这个开始,
- 当您的 MySQL 凭据也有误时,可能会发生此错误。使用机器 2 上 CLI 中 Sqoop 中使用的凭据连接到机器 2 上的 MySQL。检查确切的数据库、命令等。如果您无法执行此操作,则可能是与主机相关的权限问题MySQL 您在 Sqoop 命令中使用的用户。
sqoop-import --connect jdbc:mysql://192.168.1.126:3306/demo_poc --username root --P --table employee -m 1 --hive-import --hive-table demo_poc.employee
您提供的 IP 地址看起来像是在同一网络中。如果这两台机器在网络中,那么 ping 命令就可以工作。在我们输入 ping 'I.P of MYSQL' 之后,通信将建立。
MYSQL>将 . 上的所有权限授予 ''@'192.168.1.129' MYSQL>将 . 上的所有权限授予 '%'@'192.168.1.129' 以上两个命令由管理员在 MYSQL 机器上执行。
- 你必须提到 --target-dir
for example : sqoop import --connect "mysql://192.168.1.126:3306/demo_poc "
--username root
--password "root"
--query "select column_name from table_name where $CONDITIONS"
--fields-terminated-by ',' --target-dir /user/.... -m 1 --delete-target-dir --as-parquetfile