【发布时间】:2021-05-16 23:26:11
【问题描述】:
目前我们使用orc file format将传入的流量存储在s3中用于欺诈检测分析
我们确实选择了orc文件格式,原因如下
- 压缩
- 以及使用 athena 查询数据的能力
问题:
- 由于 orc 文件是只读的,我们希望每 20 分钟不断更新文件内容
这意味着我们
- 需要从s3下载orc文件,
- 读取文件
- 写入文件末尾
- 最后上传回s3
这不是问题,但随着数据每天显着增长~2GB every day。下载 10Gb 文件读取、写入和上传是非常昂贵的过程
问题: 有没有办法使用另一种文件格式,它也提供追加/插入,并且可以被 athena 用来查询?
从这个article 它说avro 是文件格式,但不确定
- 是否可以使用 athena 进行查询?
- 还有其他问题吗?
Note: My skill on big data technologies is on beginner level
【问题讨论】:
-
您可以使用 Athena 查询 Avro 文件 - 您不能每天上传一个新的 ORC 文件吗? Athena 使用集群来读取文件,如果数据分布在多个对象中,则可以更轻松地进行并行化。
-
谢谢会调查一下,但由于我们的平台要求,我们需要查询不超过 20 分钟的数据
-
更具体的要求会有所帮助,否则我建议您自己获取 Kinesis Firehose 并将其配置为将传入数据批量处理为
x或最多y分钟,然后将其存储在S3。 Kinesis Firehose 可以在 parquet 和 ORC 中做到这一点,这两者都可以通过 Athena 进行查询 - docs -
即使文件格式允许追加(例如,您可以追加到 CSV 文件),像 S3 这样的对象存储不允许允许追加。如果是这样,您可能会看到部分数据而有人正在追加更多行。推荐的方法是对传入的数据进行微批处理(如 Maurice 建议的那样)。如果文件很小,查询起来会很昂贵,因此您可能需要将它们重新批处理成更大的文件。您还可以从Trino (formerly Presto SQL) community获得更多建议。
-
查看了 kinesis ,但是对于摄取大量记录来说太贵了,无论如何感谢您提供的信息
标签: amazon-s3 avro amazon-athena orc