首页 > 解决方案 > Sqoop 导出 Oracle : java.lang.OutOfMemoryError: Java heap space

问题描述

我在将 sqoop 导出到具有 150 列和大约 120 列作为 varchar2(4000) 数据类型的 oracle 表时遇到问题。以前它没有默认为 4000 数据长度,并且 sqoop 导出工作正常。当它在表级别默认为数据长度 4000 时,相同的 sqoop 导出失败并出现以下错误。我尝试过使用 mapr map & reduce of memory & opts 不同的值,但没有运气。

在 sqoop 开始时从 oracle 表中获取元数据时,Sqoop 导出失败。任何帮助表示赞赏。

谢谢,

日志:

21/03/15 05:24:08 INFO tool.CodeGenTool: Beginning code generation
21/03/15 05:24:08 DEBUG manager.OracleManager: Using column names query: SELECT t.* FROM schema.tableTest t WHERE 1=0
21/03/15 05:24:08 DEBUG manager.SqlManager: Execute getColumnInfoRawQuery : SELECT t.* FROM schema.tableTest t WHERE 1=0
21/03/15 05:24:08 DEBUG manager.OracleManager$ConnCache: Got cached connection for mockedURL
21/03/15 05:24:08 INFO manager.OracleManager: Time zone has been set to GMT
21/03/15 05:24:08 DEBUG manager.SqlManager: Using fetchSize for next query: 1000
21/03/15 05:24:08 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM schema.tableTest t WHERE 1=0
21/03/15 05:24:08 DEBUG manager.OracleManager$ConnCache: Caching released connection for mockedURL
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at java.lang.reflect.Array.newArray(Native Method)
        at java.lang.reflect.Array.newInstance(Array.java:75)
        at oracle.jdbc.driver.BufferCache.get(BufferCache.java:226)
        at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:7672)
        at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.java:1005)
        at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:277)
        at oracle.jdbc.driver.T4CTTIdcb.receive(T4CTTIdcb.java:146)
        at oracle.jdbc.driver.T4C8Oall.readDCB(T4C8Oall.java:844)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:358)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
        at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:794)
        at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:803)
        at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:299)
        at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:270)
        at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:256)
        at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:332)
        at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1872)
        at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1671)
        at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:106)
        at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:63)
        at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)

标签: oracleexportsqoop

解决方案


推荐阅读