我使用下面的代码创建一个准备好的语句来插入JSON文档(插入cassandra的json功能):
String queryString =" INSERT INTO" .concat(keySpace).concat("。")。concat(table).concat(" JSON:payload");
preparedStatement = session.prepare(queryString)
但是,当我执行我的session.prepare抛出异常时:
由:com.datastax.driver.core.exceptions.SyntaxError:第1:40行输入':( ... O asda_search.test_table JSON:...)at com.datastax.driver.core.Responses $ Error .asException(Responses.java:132)at com.datastax.driver.core.SessionManager $ 4.apply(SessionManager.java:220) at com.datastax.driver.core.SessionManager $ 4.apply(SessionManager.java) :196)at shade.datastax.spark.connector.googlemon.util.concurrent.Futures $ ChainingListenableFuture.run(Futures.java:906)at shade.datastax.spark.connector.googlemon.uti l.concurrent.Futures $ 1 $ 1.run(Futures.java:635) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor $ Worker.run( ThreadPoolExecutor.java:624)at ioty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:748)
相同的上述代码在我的本地和部署的Cassandra数据中心完全正常。
解决方案
Hi Bikas,
Cosmos DB Cassandra API可能与内部部署的Cassandra实例不完全相同。 Cosmos DB Cassandra API基于CQL v4,您使用的Java客户端针对CQL v3,因此可能需要进行一些调整以解决一些的差异。
ere是一个基于java的示例,使用java将数据写入Cassandra API客户,作为参考。
教程:将示例数据加载到Azure Cosmos DB中的Cassandra API表
谢谢,
迈克
Hi,
I am using below code to create a prepared statement to insert JSONdocuments(Insert json feature of cassandra):
String queryString = "INSERT INTO ".concat(keySpace).concat(".").concat(table) .concat(" JSON :payload");
preparedStatement = session.prepare(queryString)
But, when I execute my session.prepare throws below exception:
Caused by: com.datastax.driver.core.exceptions.SyntaxError: line 1:40 no viable alternative at input ': (...O asda_search.test_table JSON :...) at com.datastax.driver.core.Responses$Error.asException(Responses.java:132) at com.datastax.driver.core.SessionManager$4.apply(SessionManager.java:220) at com.datastax.driver.core.SessionManager$4.apply(SessionManager.java:196) at shade.datastax.spark.connector.googlemon.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:906) at shade.datastax.spark.connector.googlemon.util.concurrent.Futures$1$1.run(Futures.java:635) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at ioty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:748)
The same above code works perfectly fine in my local and deployed Cassandra in our data center.
解决方案Hi Bikas,
The Cosmos DB Cassandra API may not behave exactly as a on-premise Cassandra instance. The Cosmos DB Cassandra API is based upon CQL v4, where the java client you are using is targeted for CQL v3, so some adjustment might be needed here to account for some differences.
Datastax Java Driver for Apache Cassandra®
Here is a java based example of writing data to the Cassandra API with a java client, as a reference.
Tutorial: Load sample data into a Cassandra API table in Azure Cosmos DB
Thanks,
Mike
更多推荐
无法在Azure Cosmos DB中插入json
发布评论