Hadoop SQOOP-代码太大>;最大表定义?
我正在尝试从一个2000列的TERADATA表(表定义为90K字符)向HDFS导入数据。。。当我执行脚本时,我得到: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
/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的连接器:
是的,我试过了,但我认为我的连接没有问题,因为当我在一张小桌子上试的时候,我没有任何问题。。。