根据AWS Athena 限制,您一次最多可以提交 20 个相同类型的查询,但这是一个软限制,可以根据要求增加。我曾经boto3与 Athena 进行交互,我的脚本提交了 16 个 CTAS 查询,每个查询大约需要 2 分钟才能完成。在 AWS 账户中,只有我在使用 Athena 服务。但是,当我通过控制台查看查询状态时,我发现尽管所有查询都处于 state 状态,但实际上只有少数查询(平均 5 个)正在执行Running。以下是通常会在 Athena 历史选项卡中看到的内容:

我了解,在我向 Athena 提交查询后,它会根据整体服务负载和传入请求的数量分配资源来处理查询。但是我尝试在不同的日期和时间运行它们,仍然会同时执行大约 5 个查询。
所以我的问题是它应该如何?如果是这样,那么如果其中大约 15 个查询处于空闲状态并等待可用插槽,那么能够提交多达 20 个查询又有什么意义呢?
刚刚在 presto 文档中偶然发现了 HIVE CONNECTOR,其中有一节AWS Glue Catalog Configuration Properties。在那里我们可以看到
hive.metastore.glue.max-connections:到 Glue 的最大并发连接数(默认为 5)。
这让我想知道它是否与我的问题有关。据我了解,Athena 只是一个在 EMR 集群上运行的 Presto,该集群配置为使用 AWS Glue 数据目录作为 Metastore。
那么,如果我的问题来自这样一个事实,即 Athena 的 EMR 集群只是使用默认值来连接到 Glue 的并发连接,即 5,这正是在我的情况下实际执行(平均)并发查询的数量。
Athena 团队最近为 Athena 部署了许多新功能。虽然 …
我正在尝试使用Aws Athena在csv文件上创建一个外部表,但代码如下,但该行TBLPROPERTIES ("skip.header.line.count"="1")不起作用:它不会跳过csv文件的第一行(标题).
CREATE EXTERNAL TABLE mytable
(
colA string,
colB int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '\"',
'escapeChar' = '\\'
)
STORED AS TEXTFILE
LOCATION 's3://mybucket/mylocation/'
TBLPROPERTIES (
"skip.header.line.count"="1")
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
查看日期/时间 Athena 文档,我没有看到执行此操作的函数,这让我感到惊讶。我看到的最接近的是date_trunc('week', timestamp)但结果类似于2017-07-09 00:00:00.000我希望格式为2017-07-09
是否有一个简单的函数可以将时间戳转换为日期?
我是 AWS Athena 的新手,并试图将一些行转为列,类似于此StackOverflow 帖子中的最佳答案。
但是,当我尝试时:
SELECT column1, column2, column3
FROM data
PIVOT
(
MIN(column3)
FOR column2 IN ('VALUE1','VALUE2','VALUE3','VALUE4')
)
Run Code Online (Sandbox Code Playgroud)
我收到错误: mismatched input '(' expecting {',', ')'} (service: amazonathena; status code: 400; error code: invalidrequestexception
有谁知道如何在 AWS Athena 中完成我想要实现的目标?
我有一个Athena表,其中一些字段具有相当复杂的嵌套格式.S3中的后备记录是JSON.沿着这些方向(但我们有几个级别的嵌套):
CREATE EXTERNAL TABLE IF NOT EXISTS test (
timestamp double,
stats array<struct<time:double, mean:double, var:double>>,
dets array<struct<coords: array<double>, header:struct<frame:int,
seq:int, name:string>>>,
pos struct<x:double, y:double, theta:double>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('ignore.malformed.json'='true')
LOCATION 's3://test-bucket/test-folder/'
Run Code Online (Sandbox Code Playgroud)
现在我们需要能够查询数据并将结果导入Python进行分析.由于安全限制,我无法直接连接到雅典娜; 我需要能够给某人查询,然后他们会给我CSV结果.
如果我们只是直接选择*,我们以不完全JSON的格式返回struct/array列.这是一个示例输入文件条目:
{"timestamp":1520640777.666096,"stats":[{"time":15,"mean":45.23,"var":0.31},{"time":19,"mean":17.315,"var":2.612}],"dets":[{"coords":[2.4,1.7,0.3], "header":{"frame":1,"seq":1,"name":"hello"}}],"pos": {"x":5,"y":1.4,"theta":0.04}}
Run Code Online (Sandbox Code Playgroud)
示例输出:
select * from test
"timestamp","stats","dets","pos"
"1.520640777666096E9","[{time=15.0, mean=45.23, var=0.31}, {time=19.0, mean=17.315, var=2.612}]","[{coords=[2.4, 1.7, 0.3], header={frame=1, seq=1, name=hello}}]","{x=5.0, y=1.4, theta=0.04}"
Run Code Online (Sandbox Code Playgroud)
我希望以更方便的格式导出那些嵌套字段 - 用JSON获取它们会很棒.
不幸的是,似乎转换为JSON只适用于地图而不是结构,因为它只是将所有内容展平为数组:
SELECT timestamp, cast(stats as JSON) as stats, cast(dets as JSON) as dets, cast(pos as JSON) as …Run Code Online (Sandbox Code Playgroud) 我们想要使用aws的javascript sdk在Athena中执行参数化查询.
似乎Athena的命名查询可能是这样做的,但是文档似乎非常神秘,无法理解如何去做.
如果有人可以帮我们做以下事情,那就太好了
SELECT c FROM Country c WHERE c.name = :name name参数的值我在 Athena 中查询给出错误的表:GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters
我能够更早地查询它,但添加了另一个分区(AWS 粘合作业)来尝试优化我稍后将在查询中执行的连接。我确实重新运行了爬虫来更新表以反映分区。
我想知道这个错误实际上意味着什么。
我尝试重新抓取数据,但没有成功。接下来,我将清除底层 S3 数据并从头开始重新处理整个数据集,然后重新对其进行爬网。
SELECT *
FROM mydb.mytable
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我想了解错误的含义,以及除了重新处理整个原始数据集并重新对其进行爬网之外,是否还有其他解决方法。
计划是从 aws 数据交换中获取数据,将其移动到 s3 存储桶,然后通过 aws athena 查询数据 api。一切正常,只是感觉有点慢。
无论是数据集还是查询,我都无法在 athena 响应时间中低于 2 秒。这对于一个 API 来说非常重要。我检查了最佳实践,但似乎这些也超过了 2 秒。
所以我的问题是:2 秒是雅典娜的最短响应时间吗?
如果是这样,那么我必须切换到 postgres。
我有一个 AWS 工作负载,它将 csv 文件存储在 s3 的分区中,然后使用 Athena 通过 SQL 查询来查询数据,将结果写回 s3。
我正在 Azure 中寻找等效的行为,我可以将 csv 文件存储在存储中并查询它们并将结果写回该存储。
当我尝试从 Athena 在 Quicksight 中创建新数据集时,出现以下错误。我尝试了“表”和“视图”。它给出以下错误:
[Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client.
com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403;
Error Code: AccessDenied; Request ID: 4X60ASZS5T2Q0A9C; S3 Extended Request ID:
(Path: s3://metadataitcfcontrol/) [Execution ID: a07d4718-ffae-40b7-9777-688399fbb56f]
Run Code Online (Sandbox Code Playgroud)
看到错误消息我明白问题是 S3 存储桶上的 wrt 访问,但如何修复它?谢谢。
amazon-athena ×10
presto ×3
amazon-s3 ×2
aws-glue ×2
sql ×2
amazon-emr ×1
concurrency ×1
json ×1
limit ×1
named-query ×1
pivot ×1