You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Philippe Suray <ph...@market-ip.com> on 2015/08/21 13:57:01 UTC
date type and SimpleDateSerializer for Cassandra-2.2.0
Hello,
I have recently installed Datastax-Cassandra-2.2.0 on a Debian system.
I successfully started Cassandra.
In order to test it, I have written a small client in Java that use cassandra-driver-core-2.1.7.1.jar from Datastax.
I also installed the DevCenter in order to create a keyspace and a table. Here is the generated CQL
CREATE KEYSPACE IF NOT EXISTS test
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'datacenter1' : 3
};
CREATE TABLE IF NOT EXISTS test.incoming_message (
id uuid,
device_id text,
creation_date date,
event_timestamp timestamp,
raw_message text,
PRIMARY KEY ((device_id, creation_date ), event_timestamp)
) WITH CLUSTERING ORDER BY (event_timestamp DESC);
Based on this http://cassandra.apache.org/doc/cql3/CQL-2.2.html#usingdates, I used 'date' type to define a column 'creation_date' for 'incoming_message' table
I tried to insert data in the table with this code:
Insert insert = QueryBuilder.insertInto("incoming_message")
.value("id", UUIDs.random())
.value("device_id", celloMessage.getUnitID())
.value("creation_date", SimpleDateSerializer.timeInMillisToDay(DateTime.now(DateTimeZone.UTC).getMillis()))
.value("event_timestamp", DateTime.now(DateTimeZone.UTC).getMillis())
.value("raw_message", Hex.encodeHexString(celloMessage.getMessage()));
I use a helper class SimpleDateSerializer in order to format the date. This class can be found in Cassandra-clientutil-2.2.0.jar
When I try to insert records, I have this stack:
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Unable to make unsigned int (for date) from: '-2147466980'
at com.datastax.driver.core.Responses$Error.asException(Responses.java:102)
at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:118)
at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:183)
at com.datastax.driver.core.RequestHandler.access$2300(RequestHandler.java:45)
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:748)
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:573)
at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:991)
at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:913)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
... 2 more
What Am I doing wrong?
Thank you for your help.
Regards
Philippe SURAY
Re: date type and SimpleDateSerializer for Cassandra-2.2.0
Posted by Alex Popescu <al...@datastax.com>.
Hi Philippe,
The Date data type is new in Cassandra 2.2 and thus you'll have to use the
latest DevCenter (1.4, which I think you are already using) and Java driver
(2.2RC3).
You'll find some details about using these new types in this blog post
http://www.datastax.com/dev/blog/datastax-java-driver-2-2-0-rc1-released,
but
make sure you also check the Changelog
https://github.com/datastax/java-driver/tree/2.2/changelog as for example
the DateWithoutTime has been renamed to LocalDate.
hth
On Fri, Aug 21, 2015 at 4:57 AM, Philippe Suray <
philippe.suray@market-ip.com> wrote:
> Hello,
>
>
>
> I have recently installed Datastax-Cassandra-2.2.0 on a Debian system.
>
> I successfully started Cassandra.
>
>
>
> In order to test it, I have written a small client in Java that use
> cassandra-driver-core-2.1.7.1.jar from Datastax.
>
> I also installed the DevCenter in order to create a keyspace and a table.
> Here is the generated CQL
>
>
>
> CREATE KEYSPACE IF NOT EXISTS* test*
>
> WITH REPLICATION = {
>
> 'class' : 'NetworkTopologyStrategy',
>
> 'datacenter1' : 3
>
> };
>
> CREATE TABLE IF NOT EXISTS* test*.*incoming_message* (
>
> * id* uuid,
>
> * device_id* text,
>
> * creation_date* date,
>
> * event_timestamp* timestamp,
>
> * raw_message* text,
>
> PRIMARY KEY ((*device_id*,* creation_date* ),* event_timestamp*)
>
> ) WITH CLUSTERING ORDER BY (*event_timestamp* DESC);
>
>
>
>
>
> Based on this http://cassandra.apache.org/doc/cql3/CQL-2.2.html#usingdates,
> I used ‘date’ type to define a column ‘creation_date’ for
> ‘incoming_message’ table
>
> I tried to insert data in the table with this code:
>
> Insert insert = QueryBuilder.*insertInto*("incoming_message")
>
> .*value*("id", UUIDs.*random*())
>
> .*value*("device_id", celloMessage.*getUnitID*())
>
> .*value*("creation_date", SimpleDateSerializer.
> *timeInMillisToDay*(DateTime.*now*(DateTimeZone.*UTC*).*getMillis*()))
>
> .*value*("event_timestamp", DateTime.*now*(
> DateTimeZone.*UTC*).*getMillis*())
>
> .*value*("raw_message", Hex.*encodeHexString*(
> celloMessage.*getMessage*()));
>
>
>
> I use a helper class SimpleDateSerializer in order to format the date.
> This class can be found in Cassandra-clientutil-2.2.0.jar
>
> When I try to insert records, I have this stack:
>
> Caused by: *com.datastax.driver.core.exceptions.InvalidQueryException*:
> Unable to make unsigned int (for date) from: '-2147466980'
>
> at com.datastax.driver.core.Responses$Error.asException(
> *Responses.java:102*)
>
> at com.datastax.driver.core.DefaultResultSetFuture.onSet(
> *DefaultResultSetFuture.java:118*)
>
> at com.datastax.driver.core.RequestHandler.setFinalResult(
> *RequestHandler.java:183*)
>
> at com.datastax.driver.core.RequestHandler.access$2300(
> *RequestHandler.java:45*)
>
> at
> com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(
> *RequestHandler.java:748*)
>
> at
> com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(
> *RequestHandler.java:573*)
>
> at com.datastax.driver.core.Connection$Dispatcher.channelRead0(
> *Connection.java:991*)
>
> at com.datastax.driver.core.Connection$Dispatcher.channelRead0(
> *Connection.java:913*)
>
> at io.netty.channel.SimpleChannelInboundHandler.channelRead(
> *SimpleChannelInboundHandler.java:105*)
>
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
> *AbstractChannelHandlerContext.java:308*)
>
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
> *AbstractChannelHandlerContext.java:294*)
>
> at io.netty.handler.timeout.IdleStateHandler.channelRead(
> *IdleStateHandler.java:254*)
>
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
> *AbstractChannelHandlerContext.java:308*)
>
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
> *AbstractChannelHandlerContext.java:294*)
>
> at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
> *MessageToMessageDecoder.java:103*)
>
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
> *AbstractChannelHandlerContext.java:308*)
>
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
> *AbstractChannelHandlerContext.java:294*)
>
> at io.netty.handler.codec.ByteToMessageDecoder.channelRead(
> *ByteToMessageDecoder.java:244*)
>
> at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
> *AbstractChannelHandlerContext.java:308*)
>
> at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
> *AbstractChannelHandlerContext.java:294*)
>
> at io.netty.channel.DefaultChannelPipeline.fireChannelRead(
> *DefaultChannelPipeline.java:846*)
>
> at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(
> *AbstractNioByteChannel.java:131*)
>
> at io.netty.channel.nio.NioEventLoop.processSelectedKey(
> *NioEventLoop.java:511*)
>
> at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(
> *NioEventLoop.java:468*)
>
> at io.netty.channel.nio.NioEventLoop.processSelectedKeys(
> *NioEventLoop.java:382*)
>
> at io.netty.channel.nio.NioEventLoop.run(*NioEventLoop.java:354*)
>
> ... 2 more
>
>
>
> What Am I doing wrong?
>
>
>
> Thank you for your help.
>
>
>
> Regards
>
>
>
> Philippe SURAY
>
--
Bests,
Alex Popescu | @al3xandru
Sen. Product Manager @ DataStax
<http://cassandrasummit-datastax.com/?utm_campaign=summit15&utm_medium=summiticon&utm_source=emailsignature>