相关疑难解决方法(0)

通过ByteBuffer和CQL 3将Java对象序列化为Cassandra 1.2

我拼凑了下面没有做任何复杂事情的代码 - 只创建一个byte []变量,将其写入Cassandra(v1.2,通过新的Datastax CQL库)的blob字段中,然后将其读回再来一次.

当我把它放在它的3个元素长,当我读回它时,它是84个元素长...!这意味着我实际上尝试做的事情(序列化Java对象)org.apache.commons.lang.SerializationException: java.io.StreamCorruptedException: invalid stream header: 81000008在尝试再次反序列化时失败并出现错误.

这是一些演示我的问题的示例代码:

import java.nio.ByteBuffer;

import org.apache.commons.lang.SerializationUtils;

import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

public class TestCassandraSerialization {


    private Cluster cluster;
    private Session session;

    public TestCassandraSerialization(String node) {
        connect(node);
    }

    private void connect(String node) {
        cluster = Cluster.builder().addContactPoint(node).build();
        Metadata metadata = cluster.getMetadata();
        System.out.printf("Connected to %s\n", metadata.getClusterName());
        for (Host host: metadata.getAllHosts()) {
              System.out.printf("Datacenter: %s; Host: %s; Rack: %s\n",
                         host.getDatacenter(), host.getAddress(), host.getRack()); …
Run Code Online (Sandbox Code Playgroud)

java serialization cassandra

15
推荐指数
2
解决办法
8219
查看次数

如何使用blob数据类型在cassandra中存储对象

我尝试了数据类型blob.这给了一些Datastax例外.我尝试了对象本身,bytearray.仍然没有好处:

 Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Invalid STRING constant ([B@547248ad) for user_object of type blob
Run Code Online (Sandbox Code Playgroud)

这是失败的INSERT:

executeSting.append("INSERT INTO htadb.objecttable (object_id, bucket_name, object_key, link, user_status, user_object) ")
            .append("VALUES (")
            .append(objectId).append(",'")
            .append(bucketName).append("','")
            .append(key).append("','")
            .append(link).append("','")
            .append("online").append("','")
            .append(serializer(register)).append("')"
                    + ";");
Run Code Online (Sandbox Code Playgroud)

cassandra datastax-java-driver

2
推荐指数
1
解决办法
6006
查看次数