[英]sqoop to import data to hive
我正在尝试使用sqoop2将数据导入到蜂巢表中。 我正在使用--hive-import
但无法正常工作
码:
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table xxxx.NOTIFICATION --hive-import
错误:
错误manager.SqlManager:错误执行语句:com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称'XXXX.NOTIFICATION'。
我究竟做错了什么?
您正在使用。 表格名称中的(点)。
在内部,Sqoop将触发命令
SELECT t.* FROM xxxx.NOTIFICATION AS t WHERE 1=0
来获取您的SQL Server表的元数据。
此命令解释为
为避免这种情况,您可以使用转义符( 对于SQL Server为[] ):
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table [xxxx.NOTIFICATION] --hive-import
这将产生
SELECT t.* FROM [xxxx.NOTIFICATION] AS t WHERE 1=0
现在xxxx.NOTIFICATION
将被视为表名。
嗨,在做了一些研究并与@dev讨论问题之后,我找到了解决方案。
我正在使用sqoop2,所以我更改了命令并在下面使用了它,它对我有用。
$ sqoop import --connect "jdbc:sqlserver://192.168.x.xxx:11xx;database=SSSS;username=user;password=user" --query "SELECT * FROM xxxx.NOTIFICATION where \$CONDITIONS" --split-by xxxx.NOTIFICATION.ID --hive-import --hive-table NOTIFICATION --target-dir NOTIFICATION
在执行此命令之前,我们应该使用create
命令在配置单元中创建表。 在这里,我创建了名为NOTIFICATION
配置单元表。
我假设表名是NOTIFICATION,并且您在编写--table xxxx时要尝试提及数据库名称xxxx。
如果是这种情况,您可以改用下面提到的语法吗?
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx;databaseName=xxxx --username user --password user --table NOTIFICATION --hive-import
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.