- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
计划是从 aws 数据交换中获取数据,将其移动到 s3 存储桶,然后通过 aws athena 查询数据 api。一切正常,只是感觉有点慢。
无论是数据集还是查询,我都无法在 athena 响应时间中低于 2 秒。这对于一个 API 来说非常重要。我检查了最佳实践,但似乎这些也超过了 2 秒。
所以我的问题:
athena 的最短响应时间是 2 秒吗?
如果是这样,那么我必须切换到 postgres。
最佳答案
Athena 确实不是低延迟数据存储。您很少会看到低于一秒的响应时间,而且通常会更长。在一般情况下,Athena 不适合作为 API 的后端,但这当然取决于它是哪种 API。如果它是某种分析服务,也许用户不期望亚秒响应时间?我已经构建了使用 Athena 的 API,这些 API 工作得非常好,但这些服务的响应时间预计以秒为单位(甚至被认为是快速的),我从 Athena 团队那里得到了帮助,以根据我们的工作负载调整我们的帐户。
要了解 Athena 为什么“慢”,我们可以剖析当您向 Athena 提交查询时会发生什么:
StartQueryExecution
开始查询API调用GetQueryExecution
检查查询是否已完成。 API 调用,直到它得到一个响应,表明执行已成功、失败或被取消 GetQueryResults
检索第一页结果的 API 调用 SELECT NOW()
):
StartQueryExecution
, GetQueryExecution
, 和 GetQueryResults
,仅它们的往返时间 (RTT) 就会超过 100 毫秒。 GetQueryExecution
多次,并且调用之间的延迟将限制您发现查询成功的速度,例如如果您每 100 毫秒调用一次,则平均会在总时间中增加 100 毫秒 + RTT 的一半,因为平均而言,您会错过实际完成时间这么多。 GetQueryResults
必须从 S3 读取 CSV,解析它并将其序列化为 JSON。后续页面必须在 CSV 中向前跳过,并且可能更慢。 ListQueryExecutions
API 调用列出最近的查询执行 ID(我认为您最多可以返回 90 天),然后使用
GetQueryExecution
获取查询统计信息(请参阅
the documentation for QueryExecution.Statistics
了解每个属性的含义)。通过这些信息,您可以确定您的慢查询是由于排队、执行还是进行 API 调用的开销(如果不是前两个,则可能是最后一个)。
GetQueryExecution
, 直接从 S3 下载 CSV。 GetQueryExecution
如果您想知道列的数据类型,调用很方便,但是如果您已经知道或不在乎,直接读取数据可以为您节省一些宝贵的几十毫秒。如果您需要列数据类型,您可以获得 ….csv.metadata
与结果 CSV 一起写入的文件,它是未记录的 Protobuf 数据,请参阅 here和 here想要查询更多的信息。 关于amazon-web-services - AWS Athena 对于 api 来说太慢了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61412424/
我在 Athena 中成功创建了数据库表。请参阅下面的查询。 CREATE EXTERNAL TABLE IF NOT EXISTS s3_access_logs_db.wafbucket_lo
我正在尝试与 aws athena 合作,对我们存储在 s3 中的 json 文件进行一些查询。所以,我设法创建了一个简单的模式,一切似乎都很好,直到我注意到我的一些文件没有被考虑在内。 文件的键是用
这个问题在这里已经有了答案: AWS ATHENA: user-defined variables (4 个答案) 关闭去年。 我在 aws-athena 中有一个 SQL,它看起来或多或少像这样
刚接触 AWS,第一次使用 Athena。将不胜感激任何帮助/澄清。 我将查询结果位置设置为 s3://aws-athena-query-results-{ACCOUNTID}-{Region},无论
我正在尝试使用 Aws Athena 在 csv 文件上创建一个外部表,代码如下,但行 TBLPROPERTIES ("skip.header.line.count"="1")不起作用:它不会跳过 c
我需要将表中的某些字段隐藏到特定用户组。 我想到了创建一个查看 这允许我屏蔽这些字段。但是,一旦将权限设置为仅授予对 View 的访问权限,查询就会失败,因为它们还需要访问在 View 下正在查询的表
在 Athena 中创建表时,我无法使用特定文件创建表。有没有办法从给定的存储桶中选择以“year_2019”开头的所有文件?例如 s3://bucketname/prefix/year_2019*.
我有这个查询: SHOW PARTITIONS tablename; 结果是: dt=2018-01-12 dt=2018-01-20 dt=2018-05-21 dt=2018-04-07 dt=2
我一直在使用以下查询在 Athena 中创建一个表, CREATE EXTERNAL TABLE IF NOT EXISTS test.test_table ( `converteddat
我想将字符串的数据类型(例如:'2018-03-27T00:20:00.855556Z')转换为时间戳(例如:'2018-03-27 00:20:00')。 实际上我在 Athena 中执行查询: s
该表有一列像这样, data MAP 和行喜欢, id | data 1 | {"foo": 123} 2 | {"bar": 456} 那么,如何搜索 data["bar"] = 456? 我
我觉得这应该很简单,但我一直在努力寻找正确的术语,请耐心等待。 我有两列,timestamp和 voltages这是数组 如果我做一个简单的 SELECT timestamp, voltages FR
我正在尝试从超集访问 Athena,连接成功并且可以在 SQL 编辑器中看到所有模式和表(启用在 SQL 实验室中公开此数据库)。 在 SQL 编辑器上加载元数据时返回以下错误: ERROR OCCU
有没有人尝试过从 Oracle Data Integrator 连接 AWS Athena。 我一直在尝试这个,但我找不到合适的 JDBC 连接字符串。 我遵循的步骤 https://docs.aws
运行 MSCK repair tablename 命令时,athena查询编辑器返回错误 tables not in metastore . 但是表存在,我可以在该表上查询。 我有数据保存在 S3形式
我想通过 API 在 Athena 中创建一个数据库。我在 S3 中有 Parquet 文件,我想使用 API 进行查询,我想使用 Athena 进行查询。 无论如何,我可以通过 Athena 的 A
如何从嵌套的 json 文件创建 Athena 表?这是我的示例 json 文件。我只需要选定的键值对,例如 roofcondition 和 garagestalls。 { "reportId":
如何从嵌套的 json 文件创建 Athena 表?这是我的示例 json 文件。我只需要选定的键值对,例如 roofcondition 和 garagestalls。 { "reportId":
我在 Amazon Athena 中获得了一张表,其中一列包含 XML 数据。这可能不是最好的方法,但我需要利用现有的资源。 据我所知,没有原生支持从这些 XML 中提取数据(比如使用 XPATH 等
我得到了以下格式的带有嵌套结构的 JSON 文档 { "id": "p-1234-2132321-213213213-12312", "name": "athena to the re
我是一名优秀的程序员,十分优秀!