我能够在CLI中完美地执行以下SQOOP命令。
sqoop list-tables
--connect 'jdbc:sqlserver://xx.xx.xx.xx\MSSQLSERVER2012:1433;username=usr;password=xxx;database=db'
--connection-manager org.apache.sqoop.manager.SQLServerManager
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver
-- --schema schma
但是在OOZIE(HUE)中尝试同样的错误
2055 [main] ERROR org.apache.sqoop.manager.CatalogQueryManager - 无法列出表java.sql.SQLException:找不到合适的驱动程序 对于'jdbc:sqlserver://xx.xx.xx.xx \ MSSQLSERVER2012:1433; username = usr; password = xxx; database = db'
-
2057 [main] ERROR org.apache.sqoop.Sqoop - 运行异常 Sqoop:java.lang.RuntimeException:java.sql.SQLException:不合适 找到'jdbc:sqlserver://xx.xx.xx.xx \ MSSQLSERVER2012:1433; username = usr; password = xxx; database = db'
的驱动程序
我们怎样才能让它在oozie中运作? (致力于Cloudera Hadoop发布)
答案 0 :(得分:0)
这对我使用CDH 5.11和Hue工作流编辑器创建了一个Oozie> Sqoop1工作流程......但它需要您对UserName和Password参数进行硬编码...屏幕截图包含在下面。
以下是循序渐进:
重要提示:
一个。 " Where $ CONDITIONS"在第13项中的SQL Select语句结束时至关重要。如果没有它,它将无法运行。
B中。这使用一个SQL Server命名用户帐户,可以访问您想要Sqoop的DBServer数据库和表。
B中。如果您的命名用户没有将默认架构设置为" dbo"则需要输入这样的参数。或者如果表的模式不是数据库和用户的默认模式。
℃。 SQL Server JDBC驱动程序已正确放置在您的安装中。对于我特定版本的Cloudera,位置为:" /opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/sqoop/lib/sqljdbc41.jar"但您也可以尝试将其放入" / var / lib / oozie"或者" / var / lib / sqoop" ......不确定这些是否可以独立完成。
d。我没有成功将用户名和密码替换为使用来自job.properties文件的值的参数硬编码。我相信这是可能的,但是我无法找到任何能够清楚地表明如何去做的人,并且几天的暴力试验和错误都没有成功。
以下是截图,显示完成后的效果。 SqoopCommandAsArguments SqoopCommandAsArgumentsSuccess