Eu tenho uma tabela com cerca de 1 milhão de linhas que está sendo tentada para ser lida por um programa Java por meio da interface TQL (ou seja, usando apenas a API Java normal, sem SQL). Mas quando tento ler o contêiner, encontro um erro de memória:
Exception in thread "main" com.toshiba.mwcloud.gs.common.GSStatementException: [1043:CM_MEMORY_LIMIT_EXCEEDED] Memory limit exceeded (name=transactionWork.workerStack, requestedSize=67108880, totalSizeLimit=134217728, freeSizeLimit=1048576, totalSize=74448896, freeSize=0) (address=172.18.0.2:10001, partitionId=29)
a solução óbvia é aumentar o storeMemoryLimit e, portanto, aumentei-o do padrão de 1.024 MB para o dobro, em 2.048 MB. Embora eu tenha aumentado o limite de memória, estou recebendo o mesmo erro ao ser lido no programa Java, pois os valores de totalSizeLimit etc permanecem os mesmos, o que significa que aumentar ainda mais o storeMemoryLimit não ajudaria neste caso (embora eu tenha tentado ).
Também mudei o método de compactação de NONE para o novo ZSTD na esperança de que ele pudesse compactar o conjunto de dados pequeno o suficiente para ser lido de uma vez sem atingir o limite de memória, mas isso também falhou.
Minha única outra idéia é mudar de TQL para SQL e aumentar o limite de memória SQL, mas prefiro não mudar todo o meu código.
Alguma idéia de como ler esta tabela inteira de uma só vez?