有关与适用于 LiveAnalytics 的 Amazon Timestream 类似的功能,可以考虑使用适用于 InfluxDB 的 Amazon Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。
适用于 LiveAnalytics 的 Timestream 中 UNLOAD 使用案例示例
假设您正在监控电子商务网站的用户会话指标、流量来源以及产品购买情况。您正在使用适用于 LiveAnalytics 的 Timestream,以获取有关用户行为、产品销售的实时见解,并对吸引客户访问网站的流量通道(自然搜索、社交媒体、直接访问、付费推广等)进行营销分析。
导出不带任何分区的数据
您希望以 CSV 格式导出过去两天的数据。
UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/withoutpartition' WITH ( format='CSV', compression='GZIP')
按通道对数据进行分区
您希望以 CSV 格式导出过去两天的数据,但想要将每个流量通道的数据放在单独的文件夹中。为此,您需要使用 channel 列对数据进行分区,如下所示。
UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbychannel/' WITH ( partitioned_by = ARRAY ['channel'], format='CSV', compression='GZIP')
按事件对数据进行分区
您希望以 CSV 格式导出过去两天的数据,但想要将每个事件的数据放在单独的文件夹中。为此,您需要使用 event 列对数据进行分区,如下所示。
UNLOAD(SELECT user_id, ip_address, channel, session_id, measure_name, time, query, quantity, product_id, event FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbyevent/' WITH ( partitioned_by = ARRAY ['event'], format='CSV', compression='GZIP')
按通道和事件对数据进行分区
您希望以 CSV 格式导出过去两天的数据,但想要将每个通道的数据以及通道内每个文件放在单独的文件夹中。为此,您需要使用 channel 和 event 列对数据进行分区,如下所示。
UNLOAD(SELECT user_id, ip_address, session_id, measure_name, time, query, quantity, product_id, channel,event FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbychannelevent/' WITH ( partitioned_by = ARRAY ['channel','event'], format='CSV', compression='GZIP')
清单和元数据文件
清单文件
清单文件提供有关执行 UNLOAD 时导出的文件列表信息。清单文件可在提供的 S3 存储桶中找到,文件名为:S3://bucket_name/<queryid>_<UUID>_manifest.json。清单文件将包含结果文件夹中文件的 URL、相应文件的记录数和大小,以及查询元数据(即该查询导出至 S3 的总字节数和总行数)。
{ "result_files": [ { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 32295, "row_count": 10 } }, { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 62295, "row_count": 20 } }, ], "query_metadata": { "content_length_in_bytes": 94590, "total_row_count": 30, "result_format": "CSV", "result_version": "Amazon Timestream version 1.0.0" }, "author": { "name": "Amazon Timestream", "manifest_file_version": "1.0" } }
元数据
元数据文件提供有关数据集的其他信息,例如列名、列类型及架构。元数据文件位于提供的 S3 存储桶中,文件名为:S3://bucket_name/<queryid>_<UUID>_metadata.json
以下是元数据文件的示例。
{ "ColumnInfo": [ { "Name": "hostname", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "region", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "measure_name", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "cpu_utilization", "Type": { "TimeSeriesMeasureValueColumnInfo": { "Type": { "ScalarType": "DOUBLE" } } } } ], "Author": { "Name": "Amazon Timestream", "MetadataFileVersion": "1.0" } }
元数据文件中共享的列信息与查询 API 响应中针对 SELECT 查询发送的 ColumnInfo 具有相同结构。
使用 Glue 爬网程序构建 Glue 数据目录
以下是其他 Amazon 服务和使用 Amazon Glue 数据目录的开源项目。
-
Amazon Athena:有关更多信息,请参阅《Amazon Athena 用户指南》中的了解表、数据库和数据目录。
-
Amazon Redshift Spectrum:有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的使用 Amazon Redshift Spectrum 查询外部数据。
-
Amazon EMR:有关更多信息,请参阅《Amazon EMR 管理指南》中的使用基于资源的策略实现 Amazon EMR 对 Amazon Glue 数据目录的访问。
-
Apache Hive 元存储的 Amazon Glue 数据目录客户端:有关此 GitHub 项目的更多信息,请参阅 Apache Hive 元存储的 Amazon Glue 数据目录客户端
。