为什么 sqoop 试图使用 SELECT WITH GRANT?

Why is sqoop trying to use SELECT WITH GRANT?

我正在尝试从 teradata 数据库中进行 sqoop。

我使用了以下调用:

sqoop import --connect jdbc:teradata://<<ip>>/database=<<dbname>>,LOGMECH=<<logmech>> --connection-manager "com.cloudera.connector.teradata.TeradataManager" --username <<user>> -P  --target-dir <<targetdir>> --query 'SELECT * FROM  <<source-db>>.<<source-table>> WHERE $CONDITIONS sample 10'  --split-by  <<fieldname>> --hive-import --hive-database <<hivedb-target>>  --hive-table <<hivetable-target>>

并出现以下错误:

16/10/12 22:31:23 ERROR tool.ImportTool: Encountered IOException running import job: com.teradata.connector.common.exception.ConnectorException: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 15.00.00.11] [Error 3523] [SQLState 42000] An owner referenced by user does not have SELECT WITH GRANT OPTION access to <<source-db>>.<<source-table>>

谁能帮忙解决这个错误?

sqoop 似乎正在尝试 delegate/assign 访问 table。

输入的数据库产品是Teradata

输入的数据库版本为14.10

jdbc驱动版本为15.0

运行 Sqoop 版本:1.4.6

您需要在 <> 上授予 select 权限和授权选项。

关注这个link http://teradataforum.com/teradata/20040908_102929.htm

听起来 <<user>><<sourcedb>>.<<sourcetable>> 具有 SELECT 权限,这可能是 Teradata 中的一个视图。 <<sourcedb>> 需要对 <<sourcetable>> 中引用的对象或包含这些对象的数据库授予特殊的 SELECT 权限。

GRANT SELECT ON <<ReferencedDB>>.<<ReferencedObject>> TO <<SourceDB>> WITH GRANT OPTION;

GRANT SELECT ON <<ReferencedDB>> to <<SourceDB>> WITH GRANT OPTION;