在sqoop命令中使用teradata快速导出

wn9m85ua  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(423)

在使用teradata方法--“快速导出”时,从teradata数据库执行sqoop有问题,下面是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]用户没有对数据库的创建视图访问权限。
我怀疑fast export将实现一个临时创建的暂存表/视图,并且引擎盖下的作业将从temp表中摄取。这是一个sqoop机制吗?是否可以关闭它?
非常感谢

pw136qt2

pw136qt21#

快速导出不实现任何视图来提取数据。视图是由sqoop基于--query值创建的。因此,运行作业的用户必须对数据库授予cv权限。
您可以通过运行下面的查询来检查用户对数据库的权限,在env中将user\u name和database\u name替换为它们的值。
access_right='cv',意思是创建视图,保持原样。

SELECT * 
FROM dbc.allRoleRights WHERE roleName IN 
(SELECT roleName FROM dbc.roleMembers WHERE grantee = 'USER_NAME')
AND DATABASENAME = 'DATABASE_NAME'
AND ACCESS_RIGHT = 'CV'
ORDER BY 1,2,3,5;

您可能需要ct(create table)权限才能创建用于快速导出的日志表。这由sqoop参数--error表和--error数据库给出

相关问题