Ich erhalte die folgende Fehlermeldung:ERROR com.websudos.phantom - Batch zu groß
22:24:34.419 [run-main-0] DEBUG com.websudos.phantom - Executing query: [email protected]
22:24:34.426 [pool-15-thread-3] ERROR com.websudos.phantom - Batch too large
[error] (run-main-0) com.datastax.driver.core.exceptions.InvalidQueryException: Batch too large
com.datastax.driver.core.exceptions.InvalidQueryException: Batch too large
Haben Sie den Code erneut ausführen und immer diese Fehlermeldung auf dem folgenden Punkt jedes Mal:
cqlsh> select count(*) from superchain.blocks limit 1000000;
count
-------
51728
(1 rows)
Warnings :
Aggregation query used without partition key
Vielen Dank im Voraus für alle Einsichten.
+++ AKTUELL +++
So der säumige Code ist
//This file is Database.scala
class Database(val keyspace: KeySpaceDef) extends DatabaseImpl(keyspace) {
def insertBlock(block: Block) = {
//should note here that have also tried Batch.unlogged to same effect
Batch.logged
.add(ChainDatabase.block.insertNewRecord(block))
.future()
}
def insertTransaction(tx: Transaction) = {
//should note here that have also tried Batch.unlogged to same effect
Batch.logged
.add(ChainDatabase.tx.insertNewTransaction(tx))
.future()
}
object block extends BlockTable with keyspace.Connector
object tx extends TransactionTable with keyspace.Connector
}
object ChainDatabase extends Database(Config.keySpaceDefinition)
Im Folgenden werden die Einführungs Funktionen für Transaktion zeigt, und es gibt einen ähnlichen Code für den Block.
Haben
& &
https://github.com/outworkers/phantom/wiki/Batch-statements
Aber bin immer noch kämpfen, zu folgen versucht, eine Implementierung zu finden, die den Batch too large
Fehler nicht führen.
//This file is Transaction.scala
abstract class TransactionTable extends TransactionColumnFamily with RootConnector {
override val tableName = "transactions"
def insertNew(tx: Transaction): Future[ResultSet] = insertNewTransaction(tx).future()
def insertNewTransaction(tx: Transaction) = {
insert
.value(_.txid, tx.txid)
.value(_.version, tx.version)
.value(_.locktime, tx.locktime)
.value(_.vout, tx.vout)
.value(_.vin, tx.vin)
}
}
@ thiago-pereira & flavian: haben die Frage einige mehr in den Hoffnungen ein spezifisches Beispiel von "Wenn Sie einfach parallel Abfragen durchführen möchten, verwenden Sie einfach Future.sequence, die einen fork join Pool Art von Ansatz zu verwenden paralellisieren die Operationen. " –