标签: amazon-athena

AWS Athena 并发限制:提交的查询数 VS 正在运行的查询数

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

雅典娜历史选项卡

我了解,在我向 Athena 提交查询后,它会根据整体服务负载和传入请求的数量分配资源来处理查询。但是我尝试在不同的日期和时间运行它们,仍然会同时执行大约 5 个查询。

所以我的问题是它应该如何?如果是这样,那么如果其中大约 15 个查询处于空闲状态并等待可用插槽,那么能够提交多达 20 个查询又有什么意义呢?

更新 2019-09-26

刚刚在 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,这正是在我的情况下实际执行(平均)并发查询的数量。

更新 2019-11-27

Athena 团队最近为 Athena 部署了许多新功能。虽然 …

concurrency limit amazon-emr amazon-athena aws-glue

15
推荐指数
1
解决办法
6359
查看次数

Aws 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)

有什么建议吗?

amazon-athena

14
推荐指数
4
解决办法
1万
查看次数

Amazon Athena - 将时间戳转换为日期?

查看日期/时间 Athena 文档,我没有看到执行此操作的函数,这让我感到惊讶。我看到的最接近的是date_trunc('week', timestamp)但结果类似于2017-07-09 00:00:00.000我希望格式为2017-07-09

是否有一个简单的函数可以将时间戳转换为日期?

sql presto amazon-athena

14
推荐指数
1
解决办法
3万
查看次数

如何在 AWS Athena 中将行转换为列?

我是 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 中完成我想要实现的目标?

sql pivot amazon-web-services amazon-athena

13
推荐指数
3
解决办法
1万
查看次数

AWS Athena将结构数组导出为JSON

我有一个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)

json presto amazon-athena

13
推荐指数
1
解决办法
1814
查看次数

在Athena中执行命名查询

我们想要使用awsjavascript sdk在Athena中执行参数化查询.

似乎Athena的命名查询可能是这样做的,但是文档似乎非常神秘,无法理解如何去做.

如果有人可以帮我们做以下事情,那就太好了

  • 在athena中避免sql注入的推荐方法是什么?
  • 创建一个参数化查询,如 SELECT c FROM Country c WHERE c.name = :name
  • 传递name参数的值
  • 执行此查询

sql-injection named-query amazon-web-services amazon-athena

13
推荐指数
1
解决办法
1739
查看次数

AWS Athena - GENERIC_INTERNAL_ERROR:分区值的数量与过滤器的数量不匹配

我在 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)

我想了解错误的含义,以及除了重新处理整个原始数据集并重新对其进行爬网之外,是否还有其他解决方法。

amazon-web-services presto amazon-athena aws-glue

13
推荐指数
1
解决办法
6515
查看次数

AWS Athena 对于 api 来说太慢了?

计划是从 aws 数据交换中获取数据,将其移动到 s3 存储桶,然后通过 aws athena 查询数据 api。一切正常,只是感觉有点慢。

无论是数据集还是查询,我都无法在 athena 响应时间中低于 2 秒。这对于一个 API 来说非常重要。我检查了最佳实践,但似乎这些也超过了 2 秒。

所以我的问题是:2 秒是雅典娜的最短响应时间吗?

如果是这样,那么我必须切换到 postgres。

amazon-web-services amazon-athena

13
推荐指数
1
解决办法
4093
查看次数

s3 上的 AWS Athena 的 Azure 等效项

我有一个 AWS 工作负载,它将 csv 文件存储在 s3 的分区中,然后使用 Athena 通过 SQL 查询来查询数据,将结果写回 s3。

我正在 Azure 中寻找等效的行为,我可以将 csv 文件存储在存储中并查询它们并将结果写回该存储。

amazon-s3 azure-storage azure-blob-storage amazon-athena

13
推荐指数
1
解决办法
2万
查看次数

Quicksight Athena - [Simba][AthenaJDBC](100071) AWS Athena 客户端引发错误

当我尝试从 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-s3 amazon-quicksight amazon-athena

13
推荐指数
1
解决办法
2万
查看次数