Я получаю ошибку ниже, когда вставка данных в HBase через BufferedMutator,
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:717)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:957)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1367)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.hadoop.hbase.client.AsyncRequestFutureImpl.sendMultiAction(AsyncRequestFutureImpl.java:547)
at org.apache.hadoop.hbase.client.AsyncProcess.submitMultiActions(AsyncProcess.java:337)
at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:320)
at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:228)
at org.apache.hadoop.hbase.client.BufferedMutatorImpl.doFlush(BufferedMutatorImpl.java:303)
at org.apache.hadoop.hbase.client.BufferedMutatorImpl.close(BufferedMutatorImpl.java:241)
Здесь я вставляю данные длиной 200-300 байт на запрос с одним подключением.И синхронизированные запросы генерируются.Также найдите дамп ниже.где ожидающие потоки по времени имеют htable-pool Дамп темы
Не могли бы вы ответить на вопрос, как справиться с этим исключением.Пример кода -
try(BufferedMutator mutator = Connection.creatConnection().getBufferedMutator(TableName.valueOf(tableName)) {
Put put = new Put(Bytes.toBytes(rowKey));
map.forEach(element->put.addColumn(CF,element.getKey(),element.getValue());
mutator.mutate(put);
} catch (Exception e) {
e.printStackTrace();
}