У меня есть таблица, содержащая 1MB blobs.Cassandra OutOfMemoryError во время запроса диапазона
CREATE TABLE blobs_1 ( ключ текста, версия BigInt, кусок Int, object_blob блоб, object_size INT, PRIMARY KEY (ключ, версия, фрагмент) )
Каждый нескладеха будет распространяться на о 100 кусков. Следующий запрос приводит к ошибкам OutOfMemory:
выберите object_size из blobs_1 где key = 'key1' и version = 1;
Здесь ошибка:
java.lang.OutOfMemoryError: Java куча пространства на org.apache.cassandra.io.util.RandomAccessReader.readBytes (RandomAccessReader.java:344) в org.apache. cassandra.utils.ByteBufferUtil.read (ByteBufferUtil.java:392) на org.apache.cassandra.utils.ByteBufferUtil.readWithLength (ByteBufferUtil.java:355) в org.apache.cassandra.db.ColumnSerializer.deserializeColumnBody (ColumnSerializer. java: 124) at org.apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable (OnDiskAtom.java:85) at org.apache.cassandra.db.Column $ 1.computeNext (столбец) .java: 75) at org.apache.cassandra.db.Column $ 1.computeNext (Column.java:64) at com.google.common.collect.AbstractIterator.tryToComputeNext (AbstractIterator.java:143) at com. google.common.collect.AbstractIterator.hasNext (AbstractIterator.java:138) на org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext (SimpleSliceReader.java:88) на org.apache.cassandra.db.columniterator. SimpleSliceReader.computeNext (SimpleSliceReader.java:37) на com.google.common.collect.AbstractIterator.tryToComputeNext (AbstractIterator.java:143) на com.google.common.collect.AbstractIterator.hasNext (AbstractIterator.java:138) at org.apache.cassandra.db.columniterator.SSTableSliceIterator.hasNext (SSTableSliceIterator.java:82) на org.apache.cassandra.db.columniterator.LazyColumnIterator.computeNext (LazyColumnIterator.java:82) на org.apache.cassandra.db.columniterator.LazyColumnIterator.computeNext (LazyColumnIterator.java:59) в com.google. common.collect.AbstractIterator.tryToComputeNext (AbstractIterator.java:143) at com.google.common.collect.AbstractIterator.hasNext (AbstractIterator.java:138) at org.apache.cassandra.db.filter.QueryFilter $ 2.getNext (QueryFilter.java:157) at org.apache.cassandra.db.filter.QueryFilter $ 2.hasNext (QueryFilter.java:140) at org.apache.cassandra.utils.MergeIterator $ Candidate.advance (MergeIterator.java: 144) at org.apache.cassandra.utils.MergeIterator $ ManyToOne.advance (MergeIterator.java:123) at org .apache.cassandra.utils.MergeIterator $ ManyToOne.computeNext (MergeIterator.java:97) на com.google.common.collect.AbstractIterator.tryToComputeNext (AbstractIterator.java:143) на com.google.common.collect.AbstractIterator .hasNext (AbstractIterator.java:138) at org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns (SliceQueryFilter.java:185) at org.apache.cassandra.db.filter.QueryFilter.collateColumns (QueryFilter.java : 122) на org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom (QueryFilter.java:80) в org.apache.cassandra.db.RowIteratorFactory $ 2.getReduced (RowIteratorFactory.java:101) в орг. apache.cassandra.db.RowIteratorFactory $ 2.getReduced (RowIteratorFactory.java:75) at org.apache.cassandra.utils.MergeIterator $ ManyToOne.consume (MergeIterator.java:115) at org.apache.cassandra.utils.MergeIterator $ ManyToOne.computeNext (MergeIterator.java: 98)
Это происходит на 2.0.2. Разочарование того, что один запрос сбрасывает сервер так легко. – user3025533