文档

0016-00000815

更新时间:

问题描述

SelectObject请求中不支持Range请求头。

问题原因

您发起了SelectObject请求,并在请求头中设置了Range请求头,但是SelectObject接口不支持该请求头。

问题示例

SelectObject请求中指定了不支持的请求头Range。

POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px****
Range: bytes=1024-2048
Host: BucketName.oss-cn-hangzhou.aliyuncs.com 
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
         ......
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

解决方案

删除请求中的Range请求头。

如果您希望指定查询文件的范围,您需要在XML中提供Range节点,该节点支持以下两种格式:

  • 按行查询:line-range=start-end。例如,line-range=10-20表示扫描第10行到第20行。

  • 按Split查询:split-range=start-end。例如,split-range=10-20表示扫描第10到第20个split。

其中start和end均为inclusive。如:

POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px****
Host: BucketName.oss-cn-hangzhou.aliyuncs.com 
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
         <CSV>
         		<Range>line-range=10-20</Range>
         </CSV>
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

使用Range参数查询文件时,需要包含select meta。更多信息,请参见CreateSelectObjectMeta

此外,如果您查询的目标对象类型为CSV,则可以通过AllowQuotedRecordDelimiter参数指定CSV内容是否包含引号中的换行符。当AllowQuotedRecordDelimiter参数取值为false时,SelectObject支持添加Range请求头,实现更高效的分片查询。

相关文档

  • 本页导读 (1)
文档反馈