amazon-s3 - 我必须使用哪种文件格式支持追加?
问题描述
目前我们使用orc文件格式将传入的流量存储在s3中进行欺诈检测分析
我们确实选择了 orc 文件格式,原因如下
- 压缩
- 以及使用 athena 查询数据的能力
问题 :
- 由于 orc 文件是只读的,我们希望每 20 分钟不断更新文件内容,这意味着我们
- 需要从s3下载orc文件,
- 读取文件
- 写入文件末尾
- 最后上传回s3
这不是问题,但随着数据每天显着增长~2GB every day
。下载 10Gb 文件读取、写入和上传是非常昂贵的过程
问题:有没有办法使用另一种文件格式,它也提供附加/插入,并且可以被 athena 用来查询?
从这篇文章它说avro
是文件格式,但不确定
- 如果雅典娜可以用于查询?
- 还有其他问题吗?
Note: My skill on big data technologies is on beginner level
解决方案
如果您的表没有分区,只需将aws s3 cp
新的 orc 文件复制 () 到表的目标 s3 路径,它们将立即可用于通过 Athena 进行查询。
如果您的表是分区的,您可以将新文件复制到与您的特定分区对应的路径。在将新文件复制到分区结束时,您需要将该分区添加或更新到 Athena 的元存储中。
例如,如果您的表按 分区date
,那么您需要运行此查询以确保您的分区得到添加/更新:
alter table dataset.tablename add if not exists
partition (date = YYYYMMDD)
location 's3://your-bucket/path_to_table/date=YYYYMMDD/'
推荐阅读
- python - 使用 Stripe 与 Angular 和 Django 创建新用户时,如何添加其他公司字段?
- c++ - C++/C:将字符串转换为初始化列表
- python - Python readlines() 返回空字符串
- python - i += x > 0 是什么意思?
- electron - 是否有相当于 ipcRender.invoke 的主进程?
- node.js - Axios 响应未正确执行
- amazon-web-services - 调用AWS Textract API时如何指定需要支付的Key值?
- firebase - Google Cloud Build Deploy to Firebase Hosting 出现意外错误
- 3dsmax - 如何在 Maxscript 中更改文件名?
- javascript - 如何检测 React 父组件中的本地存储集