小编sib*_*ane的帖子

S3 上特定路径的 Athena 查询结果

我知道运行已保存的 Athena 查询会根据查询名称和查询运行日期将结果存储在 Amazon S3 位置,如下所示:

QueryLocation}/{QueryName|Saved}/{yyyy}/{mm}/{dd}/{QueryID}/

是否可以覆盖它并将其存储在类似于

查询位置}/查询名称

每当运行查询时覆盖结果文件?

当然可以通过在 S3 上重命名(移动 + 删除)文件来完成,但想知道是否有更直接的方法。

amazon-s3 amazon-web-services amazon-athena

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

使DynamoDB数据在Athena中可搜索的正确方法?

我需要将一个缓慢变化的AWS DynamoDb定期转储到S3上,以便在Athena上进行查询。需要确保Athena可用的数据与DynamoDb上可用的数据相差不远(最大延迟为1小时)

我知道以下两种方法:

  1. 使用EMR(来自数据管道)导出整个DynamoDb

    这种方法的优势在于,使用单个EMR脚本(每小时运行),可以在Athena上直接搜索的压缩Parquet文件可以转储到S3上。但是,此方法的一大缺点是,尽管一个小时内仅更改少量记录,但需要进行整个转储,这要求DynamoDb中的读取容量显着更高,而EMR资源也更高。

  2. 使用DynamoDB流可反映S3上DynamoDb中的任何更改。

    这具有不需要在DynamoDb上处理不变数据的优点,从而减少了比正常操作所需的读取容量高得多的读取容量的需求。但是,将需要一个后续脚本(可能是另一个EMR作业)来整合DynamoDb流生成的每个记录文件,否则Athena的性能会因为文件数量过多而受到严重影响。

还有其他方法可以做得更好吗?

amazon-dynamodb amazon-athena

6
推荐指数
1
解决办法
759
查看次数

Presto/Athena 中嵌套日期分区的比较查询

我将 parquet 数据存储在 S3 上,并以 Hive 理解的格式进行分区

s3://<base_path>/year=2019/month=11/day=08/files.pq
Run Code Online (Sandbox Code Playgroud)

表模式还指定year, month, day为分区字段。

是否可以将查询(特别LIKE, IN, BETWEEN是日期查询)与这种数据组织进行比较?AWS Athena 最佳实践博客似乎建议其可能 ( SELECT count(*) FROM lineitem WHERE l_shipdate >= '1996-09-01' AND l_shipdate < '1996-10-01'),但我无法弄清楚如何l_shipdate在表创建期间或查询期间指定复合字段(在查询中)。

hive presto amazon-athena

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

用pyarrow vs pyspark创建的拼花文件是否兼容?

我必须分两个步骤将JSON中的分析数据转换为实木复合地板。对于大量现有数据,我正在编写一个PySpark作业,并且正在做

df.repartition(*partitionby).write.partitionBy(partitionby).
    mode("append").parquet(output,compression=codec)
Run Code Online (Sandbox Code Playgroud)

但是,对于增量数据,我计划使用AWS Lambda。PySpark可能对它来说是一个过大的杀伤力,因此我打算为此使用PyArrow(我知道它不必要地涉及到Pandas,但我找不到更好的替代方法)。因此,基本上:

import pyarrow.parquet as pq
pq.write_table(table, outputPath, compression='snappy',
    use_deprecated_int96_timestamps=True)
Run Code Online (Sandbox Code Playgroud)

我想知道由PySpark和PyArrow编写的Parquet文件是否兼容(相对于Athena)?

python parquet aws-lambda amazon-athena pyarrow

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