JSON 格式 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

JSON 格式

在使用 JSON 格式的 CloudWatch 指标流中,每条 Kinesis Data Firehose 记录都包含多个由换行符 (\n) 分隔的 JSON 对象。每个对象包含单个指标的单一数据点。

所使用的 JSON 格式与 Amazon Glue 和 Amazon Athena 完全兼容。如果您的 Kinesis Data Firehose 传输流和 Amazon Glue 表格的格式均正确,则格式可以自动转换为 Parquet 格式或 Optimized Row Columnar (ORC) 格式,然后再存储在 S3 中。有关转换格式的更多信息,请参阅在 Kinesis Data Firehose 中转换输入记录格式。有关 Amazon Glue 的正确格式的更多信息,请参阅 我应该对 JSON 输出格式使用哪个 Amazon Glue 架构?

在 JSON 格式中,unit 的有效值与 MetricDatum API 结构中 unit 的值相同。有关更多信息,请参阅 MetricDatumtimestamp 字段的值以纪元毫秒为单位,例如 1616004674229

以下为格式示例。在本示例中,JSON 所用格式的目的是便于查看,但实际上,整个格式应位于一行上。

{ "metric_stream_name": "MyMetricStream", "account_id": "1234567890", "region": "us-east-1", "namespace": "AWS/EC2", "metric_name": "DiskWriteOps", "dimensions": { "InstanceId": "i-123456789012" }, "timestamp": 1611929698000, "value": { "count": 3.0, "sum": 20.0, "max": 18.0, "min": 0.0 }, "unit": "Seconds" }\n

我应该对 JSON 输出格式使用哪个 Amazon Glue 架构?

以下是 Amazon Glue 表的 StorageDescriptor 的 JSON 表示(之后由 Kinesis Data Firehose 使用)示例。有关 StorageDescriptor 的更多信息,请参阅 StorageDescriptor

{ "Columns": [ { "Name": "metric_stream_name", "Type": "string" }, { "Name": "account_id", "Type": "string" }, { "Name": "region", "Type": "string" }, { "Name": "namespace", "Type": "string" }, { "Name": "metric_name", "Type": "string" }, { "Name": "timestamp", "Type": "timestamp" }, { "Name": "dimensions", "Type": "map<string,string>" }, { "Name": "value", "Type": "struct<min:double,max:double,count:double,sum:double>" }, { "Name": "unit", "Type": "string" } ], "Location": "s3://my-s3-bucket/", "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SerdeInfo": { "SerializationLibrary": "org.apache.hive.hcatalog.data.JsonSerDe" }, "Parameters": { "classification": "json" } }

上面的示例适用于以 JSON 格式在 Amazon S3 上写入的数据。将以下字段中的值替换为指定的值,以便以 Parquet 格式或 Optimized Row Columnar (ORC) 格式存储数据。

  • Parquet:

    • inputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat

    • outputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat

    • SerDeInfo.serializationLib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

    • parameters.classification: parquet

  • ORC:

    • inputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat

    • outputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat

    • SerDeInfo.serializationLib: org.apache.hadoop.hive.ql.io.orc.OrcSerde

    • parameters.classification: orc