且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法在Azure Cosmos DB中插入json - Cassandra

更新时间:2022-10-18 14:54:46

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 JSON documents(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.com.datastax.spark.connector.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:906) at shade.com.datastax.spark.connector.google.common.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 io.netty.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