2012-07-20 55 views
2

我正在運行單個節點Cassandra實例(用於開發目的),並且正在尋找向其中插入整數行。我的Keyspace和columnfamily已經在Cassandra上創建。Hector錯誤插入整數

我正在使用Cassandra 1.0和Hector 1.0.5(Jar版本)。我的代碼如下:

Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "10.40.14.93:9160"); 

Keyspace keyspaceOperator = HFactory.createKeyspace("mykeyspace", cluster) 

Mutator intM = HFactory.createMutator(keyspaceOperator, IntegerSerializer.get()); 

for each elem in my list { 

intM.insert(doc.document_id , 
      "mycolfamily", 
      me.prettyprint.hector.api.factory.HFactory.createColumn("numAdults", doc.numAdults)) 
} 

我讓我的客戶端上TimedOutException,並在卡桑德拉日誌,我看到一堆如下:

ERROR [MutationStage:357] 2012-07-20 08:15:02,106 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread[MutationStage:357,5,main] 
java.lang.RuntimeException: java.lang.NumberFormatException: For input string: "" 
     at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1228) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.NumberFormatException: For input string: "" 
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
     at java.lang.Long.parseLong(Long.java:410) 
     at java.lang.Long.parseLong(Long.java:468) 
     at org.apache.solr.schema.TrieField.createField(TrieField.java:508) 
     at org.apache.solr.schema.FieldType.createFields(FieldType.java:292) 
     at org.apache.solr.schema.SchemaField.createFields(SchemaField.java:106) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.addFieldToDocument(SolrSecondaryIndex.java:382) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.populateDocument(SolrSecondaryIndex.java:280) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.applyIndexUpdates(SolrSecondaryIndex.java:164) 
     at org.apache.cassandra.db.index.SecondaryIndexManager.applyIndexUpdates(SecondaryIndexManager.java:419) 
     at org.apache.cassandra.db.Table.apply(Table.java:448) 
     at org.apache.cassandra.db.RowMutation.apply(RowMutation.java:256) 
     at org.apache.cassandra.service.StorageProxy$6.runMayThrow(StorageProxy.java:415) 
     at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1224) 
     ... 3 more 
ERROR [MutationStage:357] 2012-07-20 08:15:02,106 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread[MutationStage:357,5,main] 
java.lang.RuntimeException: java.lang.NumberFormatException: For input string: "" 
     at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1228) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.NumberFormatException: For input string: "" 
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
     at java.lang.Long.parseLong(Long.java:410) 
     at java.lang.Long.parseLong(Long.java:468) 
     at org.apache.solr.schema.TrieField.createField(TrieField.java:508) 
     at org.apache.solr.schema.FieldType.createFields(FieldType.java:292) 
     at org.apache.solr.schema.SchemaField.createFields(SchemaField.java:106) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.addFieldToDocument(SolrSecondaryIndex.java:382) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.populateDocument(SolrSecondaryIndex.java:280) 
     at com.datastax.bdp.cassandra.index.solr.SolrSecondaryIndex.applyIndexUpdates(SolrSecondaryIndex.java:164) 
     at org.apache.cassandra.db.index.SecondaryIndexManager.applyIndexUpdates(SecondaryIndexManager.java:419) 
     at org.apache.cassandra.db.Table.apply(Table.java:448) 
     at org.apache.cassandra.db.RowMutation.apply(RowMutation.java:256) 
     at org.apache.cassandra.service.StorageProxy$6.runMayThrow(StorageProxy.java:415) 
     at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1224) 

} 

我試用了Datastax企業(DSE)其中包卡桑德拉,Hadoop的,Solr的等我創建通過Solr的配置我的CF卡珊德拉(您可以發表Solr的配置和架構個XML的Datastax實例來創建密鑰空間和CF - 它是一個DSE的功能)

莫非

人請幫忙?

+0

您是否可以使用用於創建列族的查詢來更新問題?好像有一個類型不匹配的地方 – 2012-09-11 22:24:29

回答

1

嘗試增加一個明確的串行到您的通話createColumn ......像這樣:

me.prettyprint.hector.api.factory.HFactory.createColumn("numAdults", doc.numAdults, StringSerializer.get(), IntegerSerializer.get())) 

而且,在另一方面,我看到你在做刀片在一個循環。在循環內部執行intM.addInsertion,並在完成後執行intM.execute()會更有效。

+0

嗨尤金 - 謝謝你。我試過這個,但不幸的是,我仍然得到相同的錯誤。不知道什麼是錯的:( – Ameya 2012-07-23 08:58:17