首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sqoop命令中使用teradata快速导出

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

Stack Overflow用户
提问于 2020-01-15 09:17:43
回答 1查看 675关注 0票数 0

在使用Teradata方法“-快速导出”时,从Teradata数据库中进行sqooping有问题,请参见下面的sqoop查询

代码语言:javascript
复制
-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 3524引起的用户没有对数据库数据库的创建视图访问权限.

我怀疑快速导出将实现临时创建的暂存表/视图,并且掩码下的作业将从临时表中摄取。这是一个sqoop机制,它可以关闭它吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2020-01-15 12:52:38

快速导出不实现任何提取数据的视图。视图由Sqoop基于--查询值创建.因此,运行作业的用户必须在数据库上授予CV权限。

您可以通过运行以下查询来检查数据库上的用户权限,将USER_NAME和DATABASE_NAME替换为env中的值。

ACCESS_RIGHT = 'CV‘,意思是创建视图,所以保持原样。

代码语言:javascript
复制
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 (创建表)权限,以便创建用于快速导出的日志表。这是由Sqoop参数错误表和错误数据库提供的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59748245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档