我已经安装了hadoop、hive、sqoop。我将表从我的数据库导入到 hdfs 但无法将其导入配置单元。我需要在 hive 中配置任何文件吗?此外,当我浏览网页时,会显示 MySQL 的配置,但我使用的是驱动程序 jdbc:sqlserver。任何人都请帮助我,因为我坚持了很多天。
5 回答
jdbc:mysql 用于 mysql,它不适用于 sqlserver,我尝试使用它,但它给出了错误。我试过下面的命令,效果很好。
命令——导入
将数据从数据库表复制到 HDFS 文件系统
在下面的示例中,我们的数据库和 hdfs 配置为:
- 服务器名称:-labDB
- 数据库名称:- 演示
- SQL 用户名:- sqoop
- SQL 密码:- simp1e
- 驱动程序类名称:- com.microsoft.sqlserver.jdbc.SQLServerDriver
- 表:- dbo.customers
- 目标目录:/tmp/dbo-customer(HDFS 文件夹名称)
句法:
sqoop import --connect jdbc:sqlserver://sqlserver-name \
--username <username> \
--password <password> \
--driver <driver-manager-class> \
--table <table-name> \
--target-dir <target-folder-name>
样本:
sqoop import --connect "jdbc:sqlserver://labDB;database=demo" \
--username sqoop \
--password simp1e \
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
--table "dbo.customer" \
--target-dir "/tmp/dbo-customer"
您应该能够使用 --hive-import 标志导入表并在 Hive 中查看它 检查您是否已定义所有全局变量 HADOOP_HOME、SQOOP_HOME 和 HIVE_HOME 如果它不适合您,同时您可以始终使用 CREATE EXTERNAL TABLE 语法来利用 Hive 中的导入数据。
您是否在 sqoop 命令行中使用了特定的 --hive-import 开关?
Sqoop import --connect 'jdbc:sqlserver://sqlservername.mycompany.com;username=hadoop;password=hadoop;database=hadoop' --table dataforhive --hive-import
只需在 hdfs 的路径上创建一个外部配置单元表。或使用 --hive-import
两者中的任何一个都应该适合你。
我也有同样的问题,我可以将我的 MYSQL 表存储在 HDFS 中,但不能将它存储在 hive 中。我使用以下命令简单地将表导入配置单元中,而无需再次将其存储在 HDFS 中,它对我有用。
sqoop import --connect jdbc:mysql://ipAddress:portNo/mysqldatabase --table mysqltablename --username mysqlusername --password mysqlpassword --hive-import --hive-table hivedatabase.hivetablename