【发布时间】:2020-05-02 00:47:37
【问题描述】:
在使用 Teradata 方法“--fast-export”时从 Teradata 数据库进行 sqooping 时遇到问题,下面是 sqoop 查询示例
-Dhadoop.security.credential.provider.path=jceks:/PATH/TO/password/password.jcecks
-Dteradata.db.job.data.dictionary.usexviews=false
--connect
jdbc:teradata://DATABASE
--password-alias
password.alias
--username
USER
--connection-manager
org.apache.sqoop.teradata.TeradataConnManager
--fields-terminated-by
'\t'
--lines-terminated-by
'\n'
--null-non-string
''
--null-string
''
--num-mappers
8
--split-by
column3
--target-dir
/THE/TARGET/DIR
--query
SELECT column1,column2,column3 WHERE column3 > '2020-01-01 00:00:00' and column3 <= '2020-01-12 10:41:20' AND $CONDITIONS
--
--method
internal.fastexport
我得到的错误是
原因:com.teradata.connector.common.exception.ConnectorException: java.sql.SQLException: [Teradata Database] [TeraJDBC] [Error 3524] [SQLState 42000] 用户没有 CREATE VIEW 访问权限到数据库 DATABASE。
我怀疑快速导出将实现临时创建的临时表/视图,并且引擎盖下的工作将从临时表中提取。这是一个sqoop机制吗,可以关掉吗?
非常感谢
丹
【问题讨论】:
-
这可能是一个愚蠢的问题,但是 -- 您的数据库实际上命名为
DATABASE吗?如果没有,看起来这个参数没有被正确设置/传递。 -
对不起,我应该提到。我从问题中删除了更敏感的信息(服务器详细信息等),我发现如果我从 sqoop 查询中删除快速导出方法,那么它运行良好但性能较差
-
我认为您应该使用 --output-method 而不是 --method ,如下面的参考链接中所示。还按照此页面的说明使用连接字符串。 docs.cloudera.com/documentation/other/connectors/teradata/1-x/…