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

参数配置

配置投递规则时,如果选择存储格式Parquet,对应的参数配置如下所示。Parquet字段配置

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

参数 说明
Key名称 您可以在日志服务的原始日志页签中查看日志字段的Key,将您需要投递到OSS的字段名(Key)有序填入,在投递时将按照此顺序组织Parquet数据,并使用该key作为Parquet数据列名。除了日志内容的Key外,日志服务还提供保留字段__time____topic____source__,保留字段详情请参见保留字段。如果遇到如下两种情况时,Parquet数据列的值为null。
  • 此处配置的key在日志服务的日志中不存在。
  • 字段由string类型转换非string类型(如double、int64等)失败。
说明
  • 同一个Key在Parquet字段中只能配置一次,不支持多次使用。
  • 如果您的日志中存在同名字段(例如都为request_time),则日志服务会将其中一个字段名显示为request_time_0,底层存储的字段名仍为request_time。因此您在投递时,只能使用原始字段名request_time

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

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

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

OSS文件地址

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

压缩类型 文件后缀 OSS文件地址示例 说明
不压缩 .parquet oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937.parquet 下载到本地,使用parquet-tools工具打开。
压缩(snappy) .snappy.parquet oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937.snappy.parquet 下载到本地,使用parquet-tools工具打开。

数据消费

  • 通过E-MapReduce、Spark 、Hive消费数据,详情请参见社区文档
  • 通过单机校验工具消费数据
    开源社区提供的Parquet-MR可以用来文件级别验证Parquet格式、查看schema、读取数据内容。您可以自行编译该工具或者单击parquet-tools-1.6.0rc3-SNAPSHOT,下载日志服务提供的版本。
    • 查看Parquet文件schema
      $ java -jar parquet-tools-1.6.0rc3-SNAPSHOT.jar schema -d 00_1490803532136470439_124353.snappy.parquet | head -n 30
      message schema {
        optional int32 __time__;
        optional binary ip;
        optional binary __source__;
        optional binary method;
        optional binary __topic__;
        optional double seq;
        optional int64 status;
        optional binary time;
        optional binary url;
        optional boolean ua;
      }
      creator: parquet-cpp version 1.0.0
      file schema: schema
      --------------------------------------------------------------------------------
      __time__: OPTIONAL INT32 R:0 D:1
      ip: OPTIONAL BINARY R:0 D:1
      .......
    • 查看Parquet文件全部内容
      $ java -jar parquet-tools-1.6.0rc3-SNAPSHOT.jar head -n 2 00_1490803532136470439_124353.snappy.parquet
      __time__ = 1490803230
      ip = 10.200.98.220
      __source__ = *.*.*.*
      method = POST
      __topic__ =
      seq = 1667821.0
      status = 200
      time = 30/Mar/2017:00:00:30 +0800
      url = /PutData?Category=YunOsAccountOpLog&AccessKeyId=*************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=********************************* HTTP/1.1
      __time__ = 1490803230
      ip = 10.200.98.220
      __source__ = *.*.*.*
      method = POST
      __topic__ =
      seq = 1667822.0
      status = 200
      time = 30/Mar/2017:00:00:30 +0800
      url = /PutData?Category=YunOsAccountOpLog&AccessKeyId=*************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=********************************* HTTP/1.1

    更多用法请执行java -jar parquet-tools-1.6.0rc3-SNAPSHOT.jar -h命令查看帮助。