Shell 通过SQOOP操作在OOZIE中列出MS SQL Server表

Shell 通过SQOOP操作在OOZIE中列出MS SQL Server表,shell,hadoop,cloudera,sqoop,oozie,Shell,Hadoop,Cloudera,Sqoop,Oozie,我能够在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.SQLServe

我能够在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]错误org.apache.sqoop.manager.CatalogQueryManager- 未能列出表java.sql.SQLException:未找到合适的驱动程序 对于“jdbc”:sqlserver://xx.xx.xx.xx\MSSQLSERVER2012:1433;用户名=usr;密码=xxx;数据库=db'

-

2057[main]错误org.apache.sqoop.sqoop-运行异常 Sqoop:java.lang.RuntimeException:java.sql.SQLException:没有合适的 找到“jdbc”的驱动程序:sqlserver://xx.xx.xx.xx\MSSQLSERVER2012:1433;用户名=usr;密码=xxx;数据库=db'

我们怎样才能让它在oozie工作?
在Cloudera Hadoop发行版上工作

我使用CDH 5.11和Hue工作流编辑器创建了一个Oozie>Sqoop1工作流……但它需要您硬编码用户名和密码参数。。。屏幕截图包括在下面

以下是一步一步的步骤:

打开色调>工作流编辑器 创建新的工作流 将Sqoop 1操作拖动到drop your action here灰色框中。 忽略默认的Sqoop命令框,而是点击Sqoop命令框下方参数右侧的+以添加新参数。 添加不带双引号的导入作为第一个参数。 删除Sqoop命令框的全部内容,它需要为空。 添加一个值为-connect且不带双引号的新参数。 添加一个值为jdbc的新参数:sqlserver://YourServerNameHere;database=YourDatabaseNameHere 添加一个值为-username的新参数 在此处添加一个值为YourSqlServerNamedUserName的新参数 添加一个值为-password的新参数 添加一个值为-query的新参数 添加一个值为Select*的新参数,该参数来自OptionalDBNameHere.SchemaNameHere.TableNameHere Where$CONDITIONS 添加一个值为-delete target dir的新参数 添加一个值为-target dir的新参数 添加一个值为的新参数hdfs://FDQServerName:PortNumber8020IsDefault/User/full/path/to/where/you/want/the/csv/file/placed/in/hdfs/NewFolderForThisTableHere -每次运行sqoop作业时,最后一个文件夹将被删除并重新创建。 添加一个值为num mappers的新参数 添加值为1的新参数 重要:

A.Where$条件在第13项中的SQL Select语句末尾至关重要。没有它,它就无法运行

B.这使用一个名为SQL Server的用户帐户,该帐户可以访问DBServer数据库和要Sqoop的表

B.如果命名用户的默认模式未设置为dbo,或者如果表的模式不是数据库和用户的默认模式,则需要输入类似的参数

C.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文件中的值替换硬编码为参数的用户名和密码。我相信这是可能的,但我一直找不到任何人能够清楚地展示如何做到这一点,而且几天的暴力审判和错误都没有成功

下面是屏幕截图,显示完成后的情况。

您能提供您的workflow.xml吗?您是否将jdbc jar文件放在HDFS上oozie的共享文件夹中?这篇文章很可能是他的翻版