【发布时间】:2019-02-19 15:13:53
【问题描述】:
我正在使用 CTAS 构建新的“ETL”管道。不幸的是,CTAS 查询经常过于密集,导致 Athena 超时。因此,我使用 CTAS 创建初始表并填充一个小样本。然后,我编写了一个脚本,在 CTAS 无法预先处理的剩余天数中查询生成 CTAS 的同一张表(这是 parquet 格式)。在修复表(以获取新数据)之前,我将这些查询结果的输出写入保存 CTAS 查询结果的同一目录。然而,由于多种原因,这似乎是一个相当笨拙的过程:
1) 使用标准 SQL 语句写出的查询结果最终都是字符串。例如,当我写出 DAU 的数量(这是一个计数并转换为一个 int)时,csv 输出是一个字符串,即包装成 ””。 在 CSV 格式中,是否可以将 Athena“query_results”(不是 CTAS)写成字符串以外的任何内容。这样做的主要问题是它意味着它不能被读回到 CTAS 生成的表中,因为这些列需要一个 bigint。当然,这可以通过 lambda 函数来解决,但对于本应微不足道的事情来说,这似乎是一个很大的开销。
2) 您能否将查询结果(不是来自 CTAS)直接放入 parquet 而不是 CSV?
3) 有什么方法可以防止使用 query_results 生成元数据(不是来自 CTAS)。同样,它可以使用 lambda 函数进行清理,但这只是我需要处理的额外废话。
提前致谢!
【问题讨论】:
标签: amazon-athena