Sqoop Teradata Connector выпуск - Памылка: Карыстальнік не паказаў CREATE TABLE доступ да базы дадзеных

Я сутыкнуўся пытанне з раздымам Teradata для Sqoop, калі я спрабую імпартаваць табліцы з Teradata View. У мяне ёсць доступ толькі для Views.

але неяк, калі sqoop праца пачынаецца яна спрабуе стварыць табліцу ў Teradata БД, які я доступ, але не маюць права ствараць якія-небудзь табліцы ў гэтай БД/схеме

Я атрымліваю памылку ніжэй

 13/05/31 03:40:12 ERROR tool.ImportTool: Encountered IOException running import job:     com.teradata.hadoop.exception.TeradataHadoopSQLException: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 14.00.00.01] [Error 3524] [SQLState 42000] The user does not have CREATE TABLE access to database EDWABSVIEWS.
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:307)
    at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(ReceiveInitSubState.java:102)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:298)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:179)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:120)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(StatementController.java:111)
    at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.java:372)
    at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.java:314)
    at com.teradata.jdbc.jdbc_4.TDStatement.doNonPrepExecute(TDStatement.java:277)
    at com.teradata.jdbc.jdbc_4.TDStatement.execute(TDStatement.java:1087)
    at com.teradata.hadoop.TeradataConnection.executeDDL(TeradataConnection.java:379)
    at com.teradata.hadoop.TeradataConnection.createTable(TeradataConnection.java:1655)
    at com.teradata.hadoop.TeradataPartitionStageInputProcessor.createStageTable(TeradataPartitionStageInputProcessor.java:233)
    at com.teradata.hadoop.TeradataPartitionStageInputProcessor.setup(TeradataPartitionStageInputProcessor.java:87)
    at com.teradata.hadoop.TeradataImportJob.run(TeradataImportJob.java:36)
    at org.apache.sqoop.teradata.TeradataImportJob.doSubmitJob(TeradataImportJob.java:173)
    at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:141)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:208)
    at org.apache.sqoop.teradata.TeradataConnManager.importTable(TeradataConnManager.java:64)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

    at    com.teradata.hadoop.TeradataPartitionStageInputProcessor.createStageTable(TeradataPartitionStageInputProcessor.java:243)
    at com.teradata.hadoop.TeradataPartitionStageInputProcessor.setup(TeradataPartitionStageInputProcessor.java:87)
    at com.teradata.hadoop.TeradataImportJob.run(TeradataImportJob.java:36)
    at org.apache.sqoop.teradata.TeradataImportJob.doSubmitJob(TeradataImportJob.java:173)
    at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:141)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:208)
    at     org.apache.sqoop.teradata.TeradataConnManager.importTable(TeradataConnManager.java:64)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

Калі ласка дапамажыце.

0
Я знайшоў адну ўласцівасць для Teradata злучальніка -D sqoop.teradata.import.use.temporary.table = ілжывым, яно таксама не працуе.
дададзена аўтар hjamali52, крыніца
Я знайшоў адну ўласцівасць для Teradata злучальніка -D sqoop.teradata.import.use.temporary.table = ілжывым, яно таксама не працуе.
дададзена аўтар hjamali52, крыніца
Я знайшоў адну ўласцівасць для Teradata злучальніка -D sqoop.teradata.import.use.temporary.table = ілжывым, яно таксама не працуе.
дададзена аўтар hjamali52, крыніца

9 адказы

Калі вы паказалі split.by.partition <�код /> метад і ваш стол не пабітая на раздзелы, або калі вы ўключылі - пастаноўка-сіла , раз'ём Teradata створыць табліцу сцэнічны па змаўчанні ў названай БД у злучальнай URL.

З Cloudera дакументацыі:

<�Р> Калі ўваходная табліца не падзелена, злучальнік стварае прамежкавую секционированную табліцу і выконвае ўстаўку ў запыт SELECT, каб перамясціць дадзеныя з крынічнай табліцы ў прамежкавай табліцу. Пасля, кожны Mapper перадае дадзеныя з аднаго раздзела, у выніку адной аперацыі AMP. З аднаго AMP, вы можаце выкарыстоўваць вялікая колькасць картографаў, каб атрымаць аптымальную прадукцыйнасць. Колькасць даступнага пастаяннага месца павінна быць настолькі вялікім, як ваш зыходнай табліцы і колькасць залатніка прасторы, неабходнага для выканання запытаў на выбарку.   Калі табліца ўжо размеркавалі, ніякіх дадатковых прамежкавая табліца не ствараецца. Тым не менш, вы можаце прымусіць раз'ём паўторна падзяліць дадзеныя з дапамогай параметру --staging-сілы для дасягнення больш высокай прадукцыйнасці. Без прымусу перадзелу дадзеных, гэты метад адкрывае ўсю-AMP аперацыю, так што вы павінны выкарыстоўваць ад 20 да 30 картографаў. Калі зыходная табліца ўяўляе сабой табліцу PI, і ваша разбіўка па слупка з'яўляецца першасным ключом табліцы, злучальнік стварае адну аперацыю AMP, і вы можаце выкарыстоўваць вялікая колькасць картографаў.

Для таго, каб вырашыць, што вы павінны пазбягаць пастаноўкі, альбо пераключыцца на split.by.value або split.by.hash ці вы можаце паказаць іншы БД для прамежкавай табліцы (< код> - пастаноўка-базы дадзеных ), на якім у вас ёсць CREATE TABLE дазвол.

Furthermore, consider that the connector will try to create a view whenever you have a free form query (--query) and multiple mappers. To workaround the CREATE VIEW permission error either you specify --table <table_NAME> and you load the whole table, you can still specify which columns (--columns) and the WHERE filter (--where), or you have to get rid of parallelism using --num-mappers 1.

Я асабіста думаю, што павінна быць ўласцівасць, каб уключыць/адключыць стварэнне уяўленняў. Пры выкананні працоўнага працэсу імпарту дадзеных не варта патрабаваць, каб стварыць выгляд, а таксама прамежкавую табліцу.

2
дададзена

Калі вы паказалі split.by.partition <�код /> метад і ваш стол не пабітая на раздзелы, або калі вы ўключылі - пастаноўка-сіла , раз'ём Teradata створыць табліцу сцэнічны па змаўчанні ў названай БД у злучальнай URL.

З Cloudera дакументацыі:

<�Р> Калі ўваходная табліца не падзелена, злучальнік стварае прамежкавую секционированную табліцу і выконвае ўстаўку ў запыт SELECT, каб перамясціць дадзеныя з крынічнай табліцы ў прамежкавай табліцу. Пасля, кожны Mapper перадае дадзеныя з аднаго раздзела, у выніку адной аперацыі AMP. З аднаго AMP, вы можаце выкарыстоўваць вялікая колькасць картографаў, каб атрымаць аптымальную прадукцыйнасць. Колькасць даступнага пастаяннага месца павінна быць настолькі вялікім, як ваш зыходнай табліцы і колькасць залатніка прасторы, неабходнага для выканання запытаў на выбарку.   Калі табліца ўжо размеркавалі, ніякіх дадатковых прамежкавая табліца не ствараецца. Тым не менш, вы можаце прымусіць раз'ём паўторна падзяліць дадзеныя з дапамогай параметру --staging-сілы для дасягнення больш высокай прадукцыйнасці. Без прымусу перадзелу дадзеных, гэты метад адкрывае ўсю-AMP аперацыю, так што вы павінны выкарыстоўваць ад 20 да 30 картографаў. Калі зыходная табліца ўяўляе сабой табліцу PI, і ваша разбіўка па слупка з'яўляецца першасным ключом табліцы, злучальнік стварае адну аперацыю AMP, і вы можаце выкарыстоўваць вялікая колькасць картографаў.

Для таго, каб вырашыць, што вы павінны пазбягаць пастаноўкі, альбо пераключыцца на split.by.value або split.by.hash ці вы можаце паказаць іншы БД для прамежкавай табліцы (< код> - пастаноўка-базы дадзеных ), на якім у вас ёсць CREATE TABLE дазвол.

Furthermore, consider that the connector will try to create a view whenever you have a free form query (--query) and multiple mappers. To workaround the CREATE VIEW permission error either you specify --table <table_NAME> and you load the whole table, you can still specify which columns (--columns) and the WHERE filter (--where), or you have to get rid of parallelism using --num-mappers 1.

Я асабіста думаю, што павінна быць ўласцівасць, каб уключыць/адключыць стварэнне уяўленняў. Пры выкананні працоўнага працэсу імпарту дадзеных не варта патрабаваць, каб стварыць выгляд, а таксама прамежкавую табліцу.

2
дададзена

Калі вы паказалі split.by.partition <�код /> метад і ваш стол не пабітая на раздзелы, або калі вы ўключылі - пастаноўка-сіла , раз'ём Teradata створыць табліцу сцэнічны па змаўчанні ў названай БД у злучальнай URL.

З Cloudera дакументацыі:

<�Р> Калі ўваходная табліца не падзелена, злучальнік стварае прамежкавую секционированную табліцу і выконвае ўстаўку ў запыт SELECT, каб перамясціць дадзеныя з крынічнай табліцы ў прамежкавай табліцу. Пасля, кожны Mapper перадае дадзеныя з аднаго раздзела, у выніку адной аперацыі AMP. З аднаго AMP, вы можаце выкарыстоўваць вялікая колькасць картографаў, каб атрымаць аптымальную прадукцыйнасць. Колькасць даступнага пастаяннага месца павінна быць настолькі вялікім, як ваш зыходнай табліцы і колькасць залатніка прасторы, неабходнага для выканання запытаў на выбарку.   Калі табліца ўжо размеркавалі, ніякіх дадатковых прамежкавая табліца не ствараецца. Тым не менш, вы можаце прымусіць раз'ём паўторна падзяліць дадзеныя з дапамогай параметру --staging-сілы для дасягнення больш высокай прадукцыйнасці. Без прымусу перадзелу дадзеных, гэты метад адкрывае ўсю-AMP аперацыю, так што вы павінны выкарыстоўваць ад 20 да 30 картографаў. Калі зыходная табліца ўяўляе сабой табліцу PI, і ваша разбіўка па слупка з'яўляецца першасным ключом табліцы, злучальнік стварае адну аперацыю AMP, і вы можаце выкарыстоўваць вялікая колькасць картографаў.

Для таго, каб вырашыць, што вы павінны пазбягаць пастаноўкі, альбо пераключыцца на split.by.value або split.by.hash ці вы можаце паказаць іншы БД для прамежкавай табліцы (< код> - пастаноўка-базы дадзеных ), на якім у вас ёсць CREATE TABLE дазвол.

Furthermore, consider that the connector will try to create a view whenever you have a free form query (--query) and multiple mappers. To workaround the CREATE VIEW permission error either you specify --table <table_NAME> and you load the whole table, you can still specify which columns (--columns) and the WHERE filter (--where), or you have to get rid of parallelism using --num-mappers 1.

Я асабіста думаю, што павінна быць ўласцівасць, каб уключыць/адключыць стварэнне уяўленняў. Пры выкананні працоўнага працэсу імпарту дадзеных не варта патрабаваць, каб стварыць выгляд, а таксама прамежкавую табліцу.

2
дададзена

Cloudera Раздым для Teradata 1.1.1 не падтрымлівае імпарт з паданняў, як гэта апісана ў Абмежаванні раздзел кіраўніцтва карыстальніка.

Злучальнік будзе спрабаваць ствараць часовыя табліцы для таго, каб забяспечыць усе ці нічога семантыку, што я чакаю, з'яўляецца прычынай для выключэння. Калі ў вас няма такіх прывілеяў на асноўнай базе дадзеных, вы можаце даручыць раз'ём стварыць прамежкавыя табліцы ў любой іншай базе дадзеных, дзе ў вас ёсць дастаткова прывілеяў. Калі ласка, азнаёмцеся з карыстальніка кіраўніцтва для атрымання далейшых інструкцый.

2
дададзена
Я выкарыстоўваю раз'ём TD ад Hortonwork, гэта падобная рэалізацыя?
дададзена аўтар hjamali52, крыніца

Cloudera Раздым для Teradata 1.1.1 не падтрымлівае імпарт з паданняў, як гэта апісана ў Абмежаванні раздзел кіраўніцтва карыстальніка.

Злучальнік будзе спрабаваць ствараць часовыя табліцы для таго, каб забяспечыць усе ці нічога семантыку, што я чакаю, з'яўляецца прычынай для выключэння. Калі ў вас няма такіх прывілеяў на асноўнай базе дадзеных, вы можаце даручыць раз'ём стварыць прамежкавыя табліцы ў любой іншай базе дадзеных, дзе ў вас ёсць дастаткова прывілеяў. Калі ласка, азнаёмцеся з карыстальніка кіраўніцтва для атрымання далейшых інструкцый.

2
дададзена
Я выкарыстоўваю раз'ём TD ад Hortonwork, гэта падобная рэалізацыя?
дададзена аўтар hjamali52, крыніца

Cloudera Раздым для Teradata 1.1.1 не падтрымлівае імпарт з паданняў, як гэта апісана ў Абмежаванні раздзел кіраўніцтва карыстальніка.

Злучальнік будзе спрабаваць ствараць часовыя табліцы для таго, каб забяспечыць усе ці нічога семантыку, што я чакаю, з'яўляецца прычынай для выключэння. Калі ў вас няма такіх прывілеяў на асноўнай базе дадзеных, вы можаце даручыць раз'ём стварыць прамежкавыя табліцы ў любой іншай базе дадзеных, дзе ў вас ёсць дастаткова прывілеяў. Калі ласка, азнаёмцеся з карыстальніка кіраўніцтва для атрымання далейшых інструкцый.

2
дададзена
Я выкарыстоўваю раз'ём TD ад Hortonwork, гэта падобная рэалізацыя?
дададзена аўтар hjamali52, крыніца

Я меў тую ж самую памылку, калі я спрабаваў выкарыстаць - падзеленым на аргумент нароўні з вольнай форме запыту - запыт аргументу. Тады я замяніў - спліт-на з - лік-Картостроители 1 , каб прымусіць SQOOP запусціць яго ў адным працэсе. А потым гэтая памылка сышла.

Я мяркую, што - спліт-на будзе спрабаваў стварыць часовыя файлы/прагляды, дзе адзін працэс картографа не можа.

Вось шаблон, які я выкарыстоўваю:

sqoop import \
--connect jdbc:teradata:///Database= \
--username  \
--password  \
--hive-import \
--hive-table  \
--hive-drop-import-delims \
--num-mappers 1 \
--target-dir  \
--query " and \$CONDITIONS"
0
дададзена

Я меў тую ж самую памылку, калі я спрабаваў выкарыстаць - падзеленым на аргумент нароўні з вольнай форме запыту - запыт аргументу. Тады я замяніў - спліт-на з - лік-Картостроители 1 , каб прымусіць SQOOP запусціць яго ў адным працэсе. А потым гэтая памылка сышла.

Я мяркую, што - спліт-на будзе спрабаваў стварыць часовыя файлы/прагляды, дзе адзін працэс картографа не можа.

Вось шаблон, які я выкарыстоўваю:

sqoop import \
--connect jdbc:teradata:///Database= \
--username  \
--password  \
--hive-import \
--hive-table  \
--hive-drop-import-delims \
--num-mappers 1 \
--target-dir  \
--query " and \$CONDITIONS"
0
дададзена

Я меў тую ж самую памылку, калі я спрабаваў выкарыстаць - падзеленым на аргумент нароўні з вольнай форме запыту - запыт аргументу. Тады я замяніў - спліт-на з - лік-Картостроители 1 , каб прымусіць SQOOP запусціць яго ў адным працэсе. А потым гэтая памылка сышла.

Я мяркую, што - спліт-на будзе спрабаваў стварыць часовыя файлы/прагляды, дзе адзін працэс картографа не можа.

Вось шаблон, які я выкарыстоўваю:

sqoop import \
--connect jdbc:teradata:///Database= \
--username  \
--password  \
--hive-import \
--hive-table  \
--hive-drop-import-delims \
--num-mappers 1 \
--target-dir  \
--query " and \$CONDITIONS"
0
дададзена