Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase SDK无法解码二进制文档_Couchbase_Couchbase Java Api - Fatal编程技术网

Couchbase SDK无法解码二进制文档

Couchbase SDK无法解码二进制文档,couchbase,couchbase-java-api,Couchbase,Couchbase Java Api,我正在尝试从Couchbase 4.0.0-4051社区版获取cbworkloadgen上载的二进制文档。Couchbase Java客户端版本为2.4.1 解码器给出的例外是- WARNING: Decoding of document with BinaryTranscoder failed. exception: Flags (0x0) indicate non-binary document for id pymc0, could not decode., id: "pymc0", ca

我正在尝试从Couchbase 4.0.0-4051社区版获取cbworkloadgen上载的二进制文档。Couchbase Java客户端版本为2.4.1

解码器给出的例外是-

WARNING: Decoding of document with BinaryTranscoder failed. exception: Flags (0x0) indicate non-binary document for id pymc0, could not decode., id: "pymc0", cas: 1486468016723525632, expiry: 0, flags: 0x0, status: SUCCESS, content size: 2048 bytes, content: "".

    com.couchbase.client.java.error.TranscodingException: Flags (0x0) indicate non-binary document for id pymc0, could not decode.
com.couchbase.client.java.error.TranscodingException: Flags (0x0) indicate non-binary document for id pymc0, could not decode.
        at com.couchbase.client.java.transcoder.BinaryTranscoder.doDecode(BinaryTranscoder.java:32)
        at com.couchbase.client.java.transcoder.BinaryTranscoder.doDecode(BinaryTranscoder.java:26)
        at com.couchbase.client.java.transcoder.AbstractTranscoder.decode(AbstractTranscoder.java:42)
        at com.couchbase.client.java.CouchbaseAsyncBucket$1.call(CouchbaseAsyncBucket.java:274)
        at com.couchbase.client.java.CouchbaseAsyncBucket$1.call(CouchbaseAsyncBucket.java:270)
        at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
我使用以下方法获取文件-


AbstractDocument<?> doc = destinationBucket.get((String) row.key(), isJson ? JsonDocument.class : BinaryDocument.class);
对于JsonDocument来说,一切正常。行是异步视图行


我做错了什么?有人能告诉我吗?或者这是与标志字段中的值不正确有关的错误?

您不能自己解码二进制文档。如果您保存实现Serializable的内容,它将被序列化并保存到Couchbase,您可以轻松地检索相同的内容。但是,如果启动N1QL查询并尝试获取二进制数据,则无法对其进行解码。这是Couchbase还不支持的。您也可以对Json文档执行同样的操作。

好吧,由于时间不够,我改变了方法,因为在一个文档上异步迭代视图时,也会出现内存不足错误


关于这个问题,可能是他将cbworkloadgen为每个文档设置的字段标记为0,而不带-j选项,并且二进制代码转换器认为它不是二进制文档,因为这个值。我通过使用N1ql而不是执行get()绕过了这个问题。但是,我不确定这是否是cbworkloadgen的一个问题,因为它没有设置正确的标志。

您可以添加更多信息以获得更精确的答案,如实际要保存和获取的内容等。@geraldss您可以查看一下。我对java sdk不太感兴趣,但只对spring-couchbase-cache.rohanagarwal感兴趣——这些N1QL函数与java无关。为了澄清,我没有使用N1QL,而是使用sdk提供的get()。CouchBaseAyncBucket类中的get()引用标志并继续解码文档(例如二进制或Json)。但是,标志值(0x0)被二进制转码器拒绝。我想知道这是Couchbase workload generator的问题还是我遗漏了什么。