我是一名学生,正在使用Cassandra进行大数据项目。我必须为我的项目批量加载相当多的数据。
我的行很大,有470列。
我正在尝试使用SSTable + JMX加载器策略。每当我尝试将SSTable加载到我的localhost pc时,我都会收到OOM错误。我不知道该怎么做而且我已经努力了 - 现在凌晨4点15分 - 我已经搜索了问题,但我似乎无法让它发挥作用。我正在Eclipse中启动我的程序,所以这可能会有所作为。
提前致谢。
更多详情:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
导致jmx批量加载器中的某个地方:
在 org.apache.cassandra.utils.EstimatedHistogram $ EstimatedHistogramSerializer.deserialize(EstimatedHistogram.java:330) 在 org.apache.cassandra.io.sstable.SSTableMetadata $ SSTableMetadataSerializer.deserialize(SSTableMetadata.java:463) 在 org.apache.cassandra.io.sstable.SSTableMetadata $ SSTableMetadataSerializer.deserialize(SSTableMetadata.java:448) 在 org.apache.cassandra.io.sstable.SSTableMetadata $ SSTableMetadataSerializer.deserialize(SSTableMetadata.java:432) 在 org.apache.cassandra.io.sstable.SSTableReader.openMetadata(SSTableReader.java:225) 在 org.apache.cassandra.io.sstable.SSTableReader.openForBatch(SSTableReader.java:160) 在 org.apache.cassandra.io.sstable.SSTableLoader $ 1.accept(SSTableLoader.java:112) 在java.io.File.list(File.java:1161)at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:73) 在 org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:155) 在 org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:144) 在 org.apache.cassandra.service.StorageService.bulkLoad(StorageService.java:3698) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497)at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)at sun.reflect.GeneratedMethodAccessor7.invoke(未知来源)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497)at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) 在 com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) 在 com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) 在 javax.management.remote.rmi.RMIConnectionImpl.access $ 300(RMIConnectionImpl.java:76) 在 javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.run(RMIConnectionImpl.java:1307) 在 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399)
答案 0 :(得分:0)
好的,它现在有效。我会尝试重新发布以避免这个问题
1)我使用旧版本的cassandra 2.0.5 iirc,所以我升级到最新版本。
2)仔细检查了cassandra.yaml文件。