Re: Configuring Transaction Log feature
Sandeep Mishra <sandy...@...>
Never worked with cassandra. Perhaps a base64 encoding is used for storing.
Thanks Sandeep, yes it works as you mentioned.We are using Cassandra as back-end and log tabled are created in it. Data in it are stored as blob type.I was trying to read blob data type from Cassandra but getting below error"InvalidRequest: Error from server: code=2200 [Invalid query] message="In call to function system.blobastext, value 0xc00000000000000000f38503 is not a valid binary representation for type text"My query : select blobastext(column1) from ulog_test;How can we read data stored in ulog tables in Cassandra?Thanks,Anjani
--On Saturday, 11 July 2020 at 13:49:02 UTC+5:30 sa...@... wrote:Hi,If you are using same identifier to start the logProcessor, there is no need to explicitly set previous time.logProcessor keeps a marker of last record read. It should be able to recover from that point.Do check again.Regards,Sandeep
On Thursday, July 9, 2020 at 9:25:17 PM UTC+8, anj...@... wrote:Hi All,We are using Janus graph with Cassandra. I am able to capture event using logProcessor and can see table created in Cassandra.Was trying to figure out, if for some reason logProcessor stops then how to get changes which was done after logProcessor was stopped?I tried to start logProcessor by passing previous time thinking it will give all events which were done after that but it does not gave previous changes.Thanks,AnjaniOn Sunday, 25 February 2018 at 16:01:06 UTC+5:30 sa...@... wrote:Yeah Jason. I never bothered to look in Janusgraph table, expecting a new table to be created.I can find a new column family in my setup too.Thanks and Regards,Sandeep
On Wednesday, February 21, 2018 at 12:09:14 AM UTC+8, Jason Plurad wrote:I suppose it could be just confusion on the terminology:
Cassandra -> Keyspace -> Table
HBase -> Table -> Column Family
On Tuesday, February 20, 2018 at 11:05:10 AM UTC-5, Jason Plurad wrote:Not sure what else to tell you. I just tried the same script from before against HBase 1.3.1, and it created the column family 'ulog_addedPerson' right after the logProcessor.addLogProcessor("addedPerson")...build()command was issued.
hbase(main):001:0> describe 'janusgraph'
Table janusgraph is ENABLED
janusgraph
COLUMN FAMILIES DESCRIPTION
{NAME => 'e', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'f', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'g', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'h', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'i', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'l', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => '60480
0 SECONDS (7 DAYS)', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'm', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 's', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 't', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'ulog_addedPerson', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE'
, TTL => 'FOREVER', COMPRESSION => 'GZ', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
10 row(s) in 0.0230 seconds
On Tuesday, February 20, 2018 at 9:46:26 AM UTC-5, Sandeep Mishra wrote:Hi Jason,I tried it with Hbase backend, and I am getting control passed to change processor.Appreciate your help, on careful checking I notice that mutation was happening under default transaction initiated by Janusgraph, hence the issue.However, the problem right now, I am unable to locate a table for data.I have taken a snapshot of table in hbase using HBase shell before and after processing, but there is no new table created.Any idea what could be wrong? Is there as possibility that, its saving log data in janusgraph table meant for saving actual data?Thanks and Regards,Sandeep
On Sunday, February 18, 2018 at 11:56:49 PM UTC+8, Sandeep Mishra wrote:Both groovy and java code works with backend as berkeleyje. Tomorrow in office i will try with Hbase as backend.Noted on your point.Thanks and Regards,Sandeep
On Sunday, February 18, 2018 at 11:14:48 PM UTC+8, Jason Plurad wrote:You can use the same exact code in a simple Java program and prove that it works.I'd think the main thing to watch out for is that your mutations are on a transaction that have the log identifier on it.Is the Gremlin Server involved in your scenario?
tx = graph.buildTransaction().logIdentifier("addedPerson").start();On Sunday, February 18, 2018 at 1:00:08 AM UTC-5, Sandeep Mishra wrote:Hi Jason,Thanks for a prompt reply.Sample code attached below works well when executed from Gremlin console.However, execution of Java version doesn't trigger callback. Probably something wrong with my code.Unfortunately I can't copy code from my office machine.I will check it again and keep you posted.Regards,SandeepOn Wednesday, February 7, 2018 at 10:58:41 PM UTC+8, Jason Plurad wrote:It means that it will use the 'storage.backend' value as the storage. See the code in GraphDatabaseConfiguration.java. It looks like your only choice is 'default', and it seems like the option is there for the future possibility to use a different backend.
The code in the docs seemed to work ok, other than a minor change in the setStartTime() parameters. You can cut and paste this code into the Gremlin Console to use with the prepackaged distribution.
import java.util.concurrent.atomic.*;
import org.janusgraph.core.log.*;
import java.util.concurrent.*;
graph = JanusGraphFactory.open('conf/janusgraph-cassandra-es.properties');
totalHumansAdded = new AtomicInteger(0);
totalGodsAdded = new AtomicInteger(0);
logProcessor = JanusGraphFactory.openTransactionLog(graph);
logProcessor.addLogProcessor("addedPerson").
setProcessorIdentifier("addedPersonCounter").
setStartTime(Instant.now()).
addProcessor(new ChangeProcessor() {
public void process(JanusGraphTransaction tx, TransactionId txId, ChangeState changeState) {
for (v in changeState.getVertices(Change.ADDED)) {
if (v.label().equals("human")) totalHumansAdded.incrementAndGet();
System.out.println("total humans = " + totalHumansAdded);
}
}
}).
addProcessor(new ChangeProcessor() {
public void process(JanusGraphTransaction tx, TransactionId txId, ChangeState changeState) {
for (v in changeState.getVertices(Change.ADDED)) {
if (v.label().equals("god")) totalGodsAdded.incrementAndGet();
System.out.println("total gods = " + totalGodsAdded);
}
}
}).
build()
tx = graph.buildTransaction().logIdentifier("addedPerson").start();
u = tx.addVertex(T.label, "human");
u.property("name", "proteros");
u.property("age", 36);
tx.commit();
If you inspect the keyspace in Cassandra afterwards, you'll see that a separate table is created for "ulog_addedPerson".
Did you have some example code of what you are attempting?
On Wednesday, February 7, 2018 at 5:55:58 AM UTC-5, Sandeep Mishra wrote:Hi Guys,We are trying to used transaction log feature of Janusgraph, which is not working as expected.No callback is received atpublic void process(JanusGraphTransaction janusGraphTransaction, TransactionId transactionId, ChangeState changeState) {Janusgraph documentation says value for log.[X].backend is 'default'.Not sure what exactly it means. does it mean HBase which is being used as backend for data.Please let me know, if anyone has configured it.Thanks and Regards,Sandeep Mishra
You received this message because you are subscribed to a topic in the Google Groups "JanusGraph users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/janusgraph-users/JN4ZsB9_DMM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to janusgra...@....
To view this discussion on the web visit https://groups.google.com/d/msgid/janusgraph-users/74e66713-d07c-4cca-a7f8-7faf225fc3c9n%40googlegroups.com.