Я пытаюсь вставить данные из шторма в кассандру. Первоначально он имеет тип строки.Вставить datetime в cassandra
Мой класс Java имеет следующий код:
String insertQuery1
= "insert into fault.as_fo_ag_uc ("
+ "host,"
+ "trigger,"
+ "eventtime,uuiddefault) "
+ "values(?,?,?,?)";
BoundStatement boundStatement = new BoundStatement(statement);
boundStatement.setString(1, dto.getHost());
boundStatement.setString(2, dto.getTrigger());
Timestamp ts = Timestamp.valueOf(dto.getEventTime());
boundStatement.setDate(3, ts);
boundStatement.setString(4, dto.getUIDDefault());
Здесь Ei получаю ошибку, что eventtime имеет тип метки времени. Поскольку я преобразовал в timestamp, но это не работает. Я также попытался с помощью Simple Date Formater форматировать его в дата типа
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,z");
boundStatement.setDate(3, new java.sql.Date(df.parse(dto.getEventTime)).getTime()));
Ошибка «EventTime имеет тип метки времени». Моя версия драйвера cassandra - 2.1.7.
com.datastax.driver.core.exceptions.InvalidTypeException: Значение eventime имеет тип метки времени на com.datastax.driver.core.AbstractGettableByIndexData.checkType (AbstractGettableByIndexData.java:89) ~ [cassandra- driver-core-2.1.7.1.jar :?] на com.datastax.driver.core.AbstractData.setString (AbstractData.java:157) ~ [cassandra-driver-core-2.1.7.1.jar :?] at com.datastax.driver.core.BoundStatement.setString (BoundStatement.java:499) ~ [cassandra-driver-core-2.1.7.1.jar :?] at storm.starter.bolt.CassandraWriterBolt.execute (CassandraWriterBolt. java: 219) [classes/:?] на backtype.storm.topology.BasicBoltExecutor.execute (BasicBoltExecutor.java:50) [storm-core-0.10.0.jar: 0.10.0] на backtype.storm.daemon.executor $ fn__5694 $ tuple_action_fn__5696.invoke (executor.clj: 690) [storm-core-0.10.0.jar: 0.10.0] в backtype.storm.daemon.executor $ mk_task_receiver $ fn__5615.invoke (executor.clj: 436) [storm-core-0.10.0.jar: 0.10.0] at backtype.storm.disruptor $ clojure_handler $ reify__5189.onEvent (disruptor.clj: 58) [storm-core-0.10.0.jar: 0.10 .0] на backtype.storm.utils.DisruptorQueue.consumeBatchToCursor (DisruptorQueue.java:127) [storm-core-0.10.0.jar: 0.10.0] на backtype.storm.utils.DisruptorQueue.consu meBatchWhenAvailable (DisruptorQueue.java:106) [storm-core-0.10.0.jar: 0.10.0] at backtype.storm.disruptor $ consume_batch_when_available.invoke (disruptor.clj: 80) [storm-core-0.10. 0.jar: 0.10.0] at backtype.storm.daemon.executor $ fn__5694 $ fn__5707 $ fn__5758.invoke (executor.clj: 819) [storm-core-0.10.0.jar: 0.10.0] at backtype.storm.util $ async_loop $ fn__545.invoke (util.clj: 479) [storm-core-0.10.0.jar: 0.10.0] at clojure.lang.AFn.run (AFn.java:22) [Clojure-1.6.0.jar :?] на java.lang.Thread.run (Thread.java:745) [: 1.7.0_79]
Просьба отправить полный стек. –
Непонятно также, почему вы создаете объекты 'Timestamp' и' java.sql.Date', когда 'setDate' просто ожидает' java.util.Date'. –
@SotiriosDelimanolis java 2.1.7 не установил функцию Timestamp – kinkajou