amazon-web-services - 在 S3 上连接文件

标签 amazon-web-services amazon-s3

我们在一个 s3 文件夹中获取多个文件(130K 个文件,合并大小为 2GB)。每个文件都有Json数据,可以是一条记录,也可以是多条记录。我需要将这些文件合并成一个 Json 文件并将其存储在 s3 上。我不想将文件下载到本地机器然后合并。有没有办法使用 AWS SDK for Java 来做到这一点?

最佳答案

实现此目的的最简单方法是使用 Amazon Athena 读取和组合文件。 Athena 是基于 Presto 的托管查询服务可以读取许多不同的文件格式。

步骤流程是:

  • 在 Athena 中创建表定义,定义输入文件格式和输入数据的位置
    • (您可以使用 AWS Glue 爬虫为您执行此操作)
  • 使用CREATE TABLE AS查询源表
    • 这将从源文件中检索数据并将输出写入新位置
    • 您可以指定输出格式和位置

将 Athena 视为 Amazon S3 之上的“查询层”。它从给定 S3 目录中的所有文件读取输入,然后可以将结果输出回 S3。您可以执行一个简单的 SELECT * 来复制所有数据,或者您可以选择通过仅选择所需的字段和条目来操作结果(使用 SELECTWHERE )。

Athena 可以从管理控制台运行,或通过普通的 AWS SDK(例如 Java)触发。

使用 Athena 的好处是不需要下载源文件和上传结果——这一切都将由 Athena 完成。

Athena 根据从磁盘读取的数据量 收费。压缩文件可降低此成本。

关于amazon-web-services - 在 S3 上连接文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513223/

相关文章:

javascript - vue.js 中的回调方法无法修改组件变量

amazon-web-services - terraform aws apigateway path_part

amazon-web-services - AWS Sagemaker无法解析csv

node.js - 在 express/nodejs 应用程序中提供存储在 S3 中的文件

javascript - 将带有预签名 URL 的分段上传从 aws javascript sdk v2 迁移到 v3

java - 无法解析导入 com.amazonaws.services.s3.AmazonS3ClientBuilder

amazon-web-services - 使用 Amazon IAM 限制用户访问单个 S3 存储桶?

android - java.lang.NoClassDefFoundError : Failed resolution of: Lorg/apache/commons/logging/LogFactory 错误

javascript - 如何使用 Node 将图像上传到 S3

linux - 将 dd stdout 从 ec2 流式传输到 s3