#hadoop #hive #teradata
#hadoop #улей #teradata
Вопрос:
Я пытаюсь выполнить sqoop из базы данных teradata.
Я использовал следующий вызов:
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 пытается делегировать / назначить доступ к таблице.
Продуктом входной базы данных является Teradata
Версия входной базы данных 14.10
Версия драйвера jdbc — 15.0
Запущенная версия Sqoop: 1.4.6
Ответ №1:
Похоже <<user>>
, у него есть SELECT
разрешение <<sourcedb>>.<<sourcetable>>
, которое, вероятно, является представлением в Teradata. <<sourcedb>>
Требуется, чтобы специальная SELECT
привилегия предоставлялась объектам, на которые ссылаются, <<sourcetable>>
или базам данных, содержащим эти объекты.
GRANT SELECT ON <<ReferencedDB>>.<<ReferencedObject>> TO <<SourceDB>> WITH GRANT OPTION;
или
GRANT SELECT ON <<ReferencedDB>> to <<SourceDB>> WITH GRANT OPTION;
Комментарии:
1. Зачем нужна ОПЦИЯ WITH GRANT? Почему в этом случае недостаточно привилегии SELECT?
2.
SELECT WITH GRANT
действует как сквозное разрешение, позволяющее пользователю получить доступ к объекту, на доступ к которому им явно не было предоставлено разрешение, и не имеет неявных прав на объект.3. Таблица, которую я запрашиваю, является фактической таблицей, а не представлением. И я знаю, что у меня есть к нему доступ SELECT. Этого доступа недостаточно?
4. Я обнаружил, что тот же вызов sqoop работает, если я добавляю -m1 . Очень странно
Ответ №2:
Вам нужно предоставить права выбора с опцией grant в <> .
Перейдите по этой ссылке http://teradataforum.com/teradata/20040908_102929.htm
Комментарии:
1. Зачем нужна ОПЦИЯ WITH GRANT? Почему недостаточно привилегии SELECT?