Saída do fluxo de métricas do CloudWatch no formato JSON
Em um fluxo de métricas do CloudWatch que usa o formato JSON, cada registro do Firehose contém vários objetos JSON separados por um caractere de nova linha (\n). Cada objeto contém um único ponto de dados de uma única métrica.
O formato JSON usado é totalmente compatível com o AWS Glue e com o Amazon Athena. Se você tiver um fluxo de entrega do Firehose e uma tabela do AWS Glue formatada corretamente, o formato poderá ser automaticamente transformado em Parquet ou em colunar de linha otimizado (ORC) antes de ser armazenado no S3. Para obter mais informações sobre como transformar o formato, consulte Converting Your Input Record Format in Firehose. Para obter mais informações sobre o formatos correto para AWS Glue, consulte Que esquema do AWS Glue devo usar para o formato de saída JSON?.
No formato JSON, os valores válidos para unit
são os mesmos que para o valor de unit
na estrutura da API MetricDatum
. Para obter mais informações, consulte MetricDatum. O valor do campo timestamp
está em milissegundos epoch, como 1616004674229
.
O exemplo a seguir é do formato. Neste exemplo, o JSON está formatado para facilitar a leitura, mas, na prática, todo o formato está em uma única linha.
{ "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" }
Que esquema do AWS Glue devo usar para o formato de saída JSON?
Veja a seguir um exemplo de uma representação JSON do StorageDescriptor
para uma tabela do AWS Glue, que seria usada pelo Firehose. Para obter mais informações sobre StorageDescriptor
, consulte 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" } }
O exemplo anterior serve para dados gravados no Amazon S3 no formato JSON. Substitua os valores nos campos a seguir pelos valores indicados para armazenar os dados no formato Parquet ou no formato colunar de linha otimizado (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