日志服务将日志投递到OSS后,支持存储为不同的文件格式。本文介绍ORC格式。

参数配置

创建OSS投递任务(新版)时,选择存储格式orc,对应的参数配置如下所示。orc

相关参数说明如下表所示。

参数

说明

Key名称

您可以在原始日志页签中查看日志字段,将需要投递到OSS的字段名有序填入。OSS投递任务将按照此顺序组织ORC数据,并使用该字段名作为ORC数据的列名。

日志服务还提供保留字段__time____topic____source__。保留字段的更多信息,请参见保留字段

如果遇到如下两种情况时,ORC数据的列值为null。

  • 此处配置的字段名在Logstore中不存在。

  • 字段的数据类型由string类型转换非string类型(如double、int64等)失败。

说明
  • 同一个字段名在Orc字段中只能配置一次,不支持多次使用。

  • 如果您的日志中存在同名字段(例如都为request_time),则日志服务会将其中一个字段名显示为request_time_0,底层存储的字段名仍为request_time。因此您在投递时,只能使用原始字段名request_time

    存在同名字段时,系统只随机投递其中一个字段的值。请尽量避免日志中使用同名字段。

类型

ORC存储支持6种类型:string、boolean、int32、int64、float、double。

日志投递过程中,会将日志服务中的日志字段由string类型转换为ORC目标类型。如果转换到非string类型失败,则该列数据为null。

OSS文件地址

投递到OSS后,OSS文件地址示例如下表所示。

说明
  • 在创建OSS投递任务时,如果您自定义了文件后缀,则文件后缀由您自定义的后缀决定。

  • 在创建OSS投递任务时,如果您未自定义文件后缀,则文件后缀由压缩类型决定。

压缩类型

文件后缀

OSS文件地址示例

说明

不压缩

如果您自定义了文件后缀,则以您的设置为准,例如.suffix。

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

下载到本地,使用orc-tools工具打开。

如果未自定义文件后缀,则文件后缀为.orc。

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.orc

压缩(snappy)

如果您自定义了文件后缀,则以您的设置为准,例如.suffix。

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

如果未自定义文件后缀,则文件后缀为.snappy.orc

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.snappy.orc

压缩(zstd)

如果您自定义了文件后缀,则以您的设置为准,例如.suffix。

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

如果未自定义文件后缀,则文件后缀为.zst.orc

oss://oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.zst.orc

数据消费

  • 通过E-MapReduce、Spark 、Hive消费数据。更多信息,请参见社区文档

  • 通过单机校验工具消费数据。

    orc tool可用于查看ORC文件的Meta信息、读取数据等。您可以通过maven repo下载orc-tools-1.7.2-uber.jar进行验证。

    • 查看Meta信息

      • 命令

        java -jar ~/Downloads/orc-tools-1.7.2-uber.jar meta -p file.orc
      • 返回结果

        Processing data file /Users/xx/file.orc [length: 200779]
        Structure for /Users/xx/file.orc
        File Version: 0.12 with ORC_CPP_ORIGINAL by ORC C++ 1.7.2
        Rows: 124022
        Compression: ZSTD
        Compression size: 65536
        Calendar: Julian/Gregorian
        Type: struct<bucket:string,bucket_region:string>
        
        Stripe Statistics:
          Stripe 1:
            Column 0: count: 124022 hasNull: false
            Column 1: count: 124022 hasNull: false min: bucket0 max: sls-training-data sum: 1468133
            Column 2: count: 0 hasNull: true
        
        File Statistics:
          Column 0: count: 124022 hasNull: false
          Column 1: count: 124022 hasNull: false min: bucket0 max: sls-training-data sum: 1468133
          Column 2: count: 0 hasNull: true
        
        Stripes:
          Stripe: offset: 3 data: 199856 rows: 124022 tail: 97 index: 578
            Stream: column 0 section ROW_INDEX start: 3 length 102
            Stream: column 1 section ROW_INDEX start: 105 length 367
            Stream: column 2 section ROW_INDEX start: 472 length 109
            Stream: column 0 section PRESENT start: 581 length 25
            Stream: column 1 section PRESENT start: 606 length 25
            Stream: column 1 section LENGTH start: 631 length 38989
            Stream: column 1 section DATA start: 39620 length 160794
            Stream: column 2 section PRESENT start: 200414 length 23
            Stream: column 2 section LENGTH start: 200437 length 0
            Stream: column 2 section DATA start: 200437 length 0
            Encoding column 0: DIRECT
            Encoding column 1: DIRECT_V2
            Encoding column 2: DIRECT_V2
        
        File length: 200779 bytes
        Padding length: 0 bytes
        Padding ratio: 0%
    • 读取数据

      • 命令

        java -jar ~/Downloads/orc-tools-1.7.2-uber.jar data -n 5 file.orc
      • 返回结果

        Processing data file /Users/xx/file.orc [length: 200779]
        {"bucket":"bucket3","bucket_region":"cn-hangzhou"}
        {"bucket":"bucket3","bucket_region":"cn-hangzhou"}
        {"bucket":"bucket4","bucket_region":"cn-hangzhou"}
        {"bucket":"dashboard-bucket","bucket_region":"cn-hangzhou"}
        {"bucket":"bucket2","bucket_region":null}

    更多用法请执行java -jar orc-tools-1.7.2-uber.jar命令或者参见orc tool查看帮助。