0

目标是将数据(csv 文件)从一个 S3 存储桶转换到另一个 S3 存储桶 - 使用 Glue。

我已经尝试过的:

我创建了一个 CSV 分类器。我创建了一个爬虫来扫描 S3 存储桶中的数据。我被困在哪里:

无法找到如何将输出再次存储在 S3 中而不将其保存在任何 RDS 或其他数据库服务中。因为胶水输出要求数据库输出,我没有也不想使用。

有什么方法可以在不使用任何其他数据库系统的情况下实现目标,只是简单的 - S3,Glue?

更多信息示例单个 CSV 文件,我正在尝试合并

在此处输入图像描述

分隔符为“;”的分类器

在此处输入图像描述

爬虫配置

在此处输入图像描述

爬虫结果(未检测到架构)

在此处输入图像描述

4

1 回答 1

0

Glue crawler 检测到架构的原因是 UNKNOWN,因为源文件中存在的行数。请参阅您在本文档中使用的内置 CSV 分类器部分。

根据要归类为 CSV 的 doc,表 schema 必须至少有两列和两行数据。

在您的情况下,您可以使用 AWS Glue 作业并使用以下任一方式直接从 S3 读取文件:

1.创建一个动态帧并将spearator传递为;在格式选项中。以下是示例,您可以根据需要进行修改。

dyF = GlueContext.create_dynamic_frame_from_options(connection_type="s3",connection_options = {"paths": [InputDir]},format="csv",format_options={"withHeader": True,"separator": ";","quoteChar": '"',"escaper": '"'},transformation_ctx = "taxidata")

2.如果您想利用 Glue 原生转换,请使用 spark 数据帧从 S3 读取数据,然后将其转换回动态帧:

df = spark.read.options(delimiter=';').csv("s3://path-to-files/")

如果您想合并具有不同架构的文件,则将包含不同架构的数据读取到您选择的不同框架中,然后使用 Join 运算符将它们合并。

请参阅this,其中包含示例代码以加入并将数据写回 s3。

于 2020-09-10T12:05:56.207 回答