Общая ошибка привязки обновления JDBC: размер запрашиваемого массива превышает ограничение виртуальной машины - PullRequest
0 голосов
/ 21 октября 2018

При простом обновлении в PostgreSQL с использованием привязки Generic JDBC Update происходит сбой конвейера из-за следующей ошибки.

dashboard error

Ниже приводитсяполная трассировка стека.

com.snaplogic.snap.api.SnapDataException: SQL operation failed
    at com.snaplogic.snap.api.sql.DatabaseUtils.writeErrorView(DatabaseUtils.java:664)
    at com.snaplogic.snap.api.sql.operations.JdbcOperationsImpl.update(JdbcOperationsImpl.java:835)
    at com.snaplogic.snaps.sql.SimpleSqlUpdateSnap.processData(SimpleSqlUpdateSnap.java:130)
    at com.snaplogic.snaps.sql.SimpleSqlWriteSnap.processDocument(SimpleSqlWriteSnap.java:100)
    at com.snaplogic.snaps.sql.SimpleSqlSnap.process(SimpleSqlSnap.java:257)
    at com.snaplogic.snap.api.ExecutionUtil.process(ExecutionUtil.java:95)
    at com.snaplogic.snap.api.ExecutionUtil.execute(ExecutionUtil.java:107)
    at com.snaplogic.snap.api.ExecutionUtil.execute(ExecutionUtil.java:75)
    at com.snaplogic.snap.api.SimpleSnap.execute(SimpleSnap.java:67)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.executeSnap(SnapRunnableImpl.java:721)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.execute(SnapRunnableImpl.java:497)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.doRun(SnapRunnableImpl.java:782)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.access$000(SnapRunnableImpl.java:110)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl$1.run(SnapRunnableImpl.java:340)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl$1.run(SnapRunnableImpl.java:336)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.call(SnapRunnableImpl.java:335)
    at com.snaplogic.cc.snap.common.SnapRunnableImpl.call(SnapRunnableImpl.java:110)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Requested array size exceeds VM limit

Я знаю, что при работе с Java мы получаем эту ошибку, когда массивы становятся слишком большими и имеют размер между пределом платформы и Integer.MAX_INT.В этих случаях нам нужно проверить кодовую базу, чтобы увидеть, действительно ли нам нужны такие большие массивы.Затем мы можем уменьшить размер массивов и покончить с этим.Или разделите массив на более мелкие порции и загрузите данные, необходимые для работы в пакетах, соответствующих ограничению платформы.

Ранее мы получали эту ошибку для размера пакета 500. Таким образом, исходя из этой точки зренияЯ уменьшил размер пакета до 150 (не то, чтобы 500 было большим числом, но все же).Но мы все равно получили ту же ошибку.

Ниже приведены настройки учетной записи.

account

Я не уверен, если этоошибка, которую мы могли бы решить в конвейере.Нужно ли менять конфигурацию SnapLogic или есть другой способ?

...