JSON 형식의 CloudWatch 지표 스트림 출력
JSON 형식을 사용하는 CloudWatch 지표 스트림에서는 각 Firehose 레코드에 줄 바꿈 문자(\n)로 구분된 여러 JSON 객체가 포함됩니다. 각 객체에는 단일 지표의 단일 데이터 요소가 포함됩니다.
사용되는 JSON 형식은 AWS Glue 및 Amazon Athena와 완전히 호환됩니다. Firehose 전송 스트림 및 AWS Glue 테이블을 올바르게 형식 지정한 경우 형식은 S3에 저장되기 전에 Parquet 형식 또는 ORC(Optimized Row Columnar) 형식으로 자동 변환될 수 있습니다. 형식 변환에 대한 자세한 내용은 Converting Your Input Record Format in Firehose 섹션을 참조하세요. AWS Glue의 올바른 형식에 대한 자세한 내용은 JSON 출력 형식에 사용해야 하는 AWS Glue 스키마 단원을 참조하세요.
JSON 형식에서 유효한 unit
값은 MetricDatum
API 구조의 unit
값과 동일합니다. 자세한 내용은 MetricDatum 단원을 참조하세요. timestamp
필드의 값은 1616004674229
와 같은 Epoch 밀리초 단위입니다.
다음은 형식의 예입니다. 이 예에서 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, "p99": 17.56, "p99.9": 17.8764, "TM(25%:75%)": 16.43 }, "unit": "Seconds" }
JSON 출력 형식에 사용해야 하는 AWS Glue 스키마
다음은 Firehose에서 사용하게 될 AWS Glue 테이블의 StorageDescriptor
에 대한 JSON 표현 예입니다. 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,p99:double,p99.9:double>" }, { "Name": "unit", "Type": "string" } ], "Location": "s3://amzn-s3-demo-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" } }
앞의 예는 Amazon S3에 JSON 형식으로 작성된 데이터에 대한 것입니다. 데이터를 Parquet 형식 또는 ORC(Optimized Row Columnar) 형식으로 저장하려면 다음 필드의 값을 표시된 값으로 바꿉니다.
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