Hadoop SQOOP-代码太大>;最大表定义?

Hadoop SQOOP-代码太大>;最大表定义?,hadoop,bigdata,teradata,sqoop,Hadoop,Bigdata,Teradata,Sqoop,我正在尝试从一个2000列的TERADATA表(表定义为90K字符)向HDFS导入数据。。。当我执行脚本时,我得到: /tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:21971: code too large 我的sqoop脚本: sqoop import \ -libjars $LIB_JARS \ --connect jdbc:teradata://PRD/Database=database

我正在尝试从一个2000列的TERADATA表(表定义为90K字符)向HDFS导入数据。。。当我执行脚本时,我得到:

/tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:21971: code too large
我的sqoop脚本:

sqoop import \
 -libjars $LIB_JARS \
 --connect jdbc:teradata://PRD/Database=database \
 --connection-manager org.apache.sqoop.teradata.TeradataConnManager \
 --table table \
 --username login \
 --password pass \
我的输出日志:

13/11/07 14:54:50 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
13/11/07 14:54:50 INFO manager.SqlManager: Using default fetchSize of 1000
13/11/07 14:54:50 INFO tool.CodeGenTool: Beginning code generation
13/11/07 14:55:31 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM table AS t WHERE 1=0
13/11/07 14:55:46 INFO orm.CompilationManager: HADOOP_HOME is /usr/lib/hadoop/libexec/..
13/11/07 14:55:46 INFO orm.CompilationManager: Found hadoop core jar at: /usr/lib/hadoop/libexec/../hadoop-core.jar
/tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:21971: code too large
  public boolean equals(Object o) {
                 ^
/tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:37949: code too large
  public void write(DataOutput __dataOut) throws IOException {
              ^
/tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:49925: code too large
  public String toString(DelimiterSet delimiters, boolean useRecordDelim) {
                ^
/tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:53970: code too large
  private void __loadFromFields(List<String> fields) {
               ^
Note: /tmp/sqoop-hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
4 errors
13/11/07 14:55:51 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Error returned by javac
        at org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:205)
        at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:83)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:390)
        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)
13/11/07 14:54:50 WARN tool.BaseSqoopTool:在命令行上设置密码不安全。考虑使用-P代替。
2007年11月13日14:54:50 INFO manager.SqlManager:使用默认的fetchSize 1000
2007年11月13日14:54:50信息工具.CodeGenTool:开始生成代码
2007年11月13日14:55:31 INFO manager.SqlManager:执行SQL语句:从表中选择t.*作为t,其中1=0
2007年11月13日14:55:46信息orm.compilementmanager:HADOOP_HOME是/usr/lib/HADOOP/libexec/。。
2007年11月13日14:55:46信息orm.CompilationManager:在以下位置找到hadoop核心jar:/usr/lib/hadoop/libexec/。/hadoop-core.jar
/tmp/sqoop hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:21971:代码太大
公共布尔等于(对象o){
^
/tmp/sqoop hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:37949:代码太大
公共无效写入(DataOutput\uu dataOut)引发IOException{
^
/tmp/sqoop hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:49925:代码太大
公共字符串到字符串(DelimiterSet分隔符,布尔useRecordDelim){
^
/tmp/sqoop hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java:53970:代码太大
私有void\uu loadFromFields(列表字段){
^
注意:/tmp/sqoop hadoopi/compile/636c527afc3baa6fdf33464f02430602/table.java使用或覆盖不推荐使用的API。
注意:有关详细信息,请使用-Xlint:deprecation重新编译。
4个错误
2007年11月13日14:55:51错误工具。ImportTool:运行导入作业时遇到IOException:java.io.IOException:javac返回的错误
位于org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:205)
位于org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:83)
位于org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:390)
位于org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
位于org.apache.sqoop.sqoop.run(sqoop.java:145)
位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
位于org.apache.sqoop.sqoop.runSqoop(sqoop.java:181)
位于org.apache.sqoop.sqoop.runTool(sqoop.java:220)
位于org.apache.sqoop.sqoop.runTool(sqoop.java:229)
位于org.apache.sqoop.sqoop.main(sqoop.java:238)
也许有人已经进口了一张大桌子。。。
非常感谢!

Java中的每个方法的字节码限制为64KB。我担心当前版本的Sqoop没有工具将您的案例中生成的长方法分解为多个子方法,因此我建议您在上打开一个新的功能请求。

我不知道您是否已经尝试过,但有TeradataHadoop的连接器:


是的,我试过了,但我认为我的连接没有问题,因为当我在一张小桌子上试的时候,我没有任何问题。。。