0

Teradata View からテーブルをインポートしようとすると、Sqoop 用の Teradata コネクタで問題が発生します。ビューにのみアクセスできます。

しかし、どういうわけか、sqoopジョブが開始すると、アクセスしているTeradata DBにテーブルを作成しようとしていますが、そのDB /スキーマにテーブルを作成する権利がありません

エラーを下回っています

 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)

手伝ってください。

4

3 に答える 3

2

Cloudera Connector for Teradata 1.1.1 は、ユーザー ガイドの制限セクションに記載されているように、ビューからのインポートをサポートしていません。

コネクタは、オール オア ナッシング セマンティクスを提供するために一時テーブルを作成しようとしますが、これが例外の理由であると予想しています。メイン データベースに対するそのような権限がない場合は、十分な権限を持つ他のデータベースにステージング テーブルを作成するようコネクタに指示できます。詳細な手順については、ユーザー ガイドを参照してください。

于 2013-06-02T13:32:03.997 に答える
1

--split-by自由形式のクエリ引数と一緒に引数を使用しようとしたときに、同じエラーが発生しました--query。次に、SQOOP を強制的に 1 つのプロセスで実行するために、に置き換え--split-byました。--num-mappers 1すると、そのエラーは消えました。

--split-by単一のマッパープロセスでは作成できない一時ファイル/ビューを作成しようとするだろうと思います。

私が使用しているテンプレートは次のとおりです。

sqoop import \
--connect jdbc:teradata://<host>/Database=<dbname> \
--username <username> \
--password <password> \
--hive-import \
--hive-table <hivetablename> \
--hive-drop-import-delims \
--num-mappers 1 \
--target-dir <hdfspath> \
--query "<sqlquery> and \$CONDITIONS"
于 2014-12-25T19:50:33.000 に答える