在Glue中解析两个不同的模式,并将它们组合到一个表中

时间:2019-07-05 13:51:42

标签: amazon-web-services aws-lambda aws-glue

假设我有两个数据集。第一个具有以下列

(AA11,AA22,AA33,AA44)

第二个具有以下内容

(BB11,BB22,BB33,BB44,BB55)

我将数据保存在存储桶中,并使用以下文件结构将其拆分

Site = A

->单位= A

-> AA.CSV

Site = B

->单位= B

-> BB.CSV

“网站”是顶级文件夹,“单位”是网站的子文件夹,.csv文件位于“单位”文件夹中

当我解析这些文件时,Glue正在执行以下操作

将以上所有列标识为double或bigint。在一种情况下,它将AA33标识为双精度,而BB33标识为bigint。这导致两个表之间的架构不匹配。我通过启用“使用表中的元数据更新所有新分区和现有分区”选项来修复此错误。但是,这导致我们发行第2张

2.Glue正在合并来自AA11和BB11的数据,并将其放置在AA11列下,而将BB11留空。例如,在这些组合表下,我们有以下内容

AA11,AA22,AA33,AA44,BB55,BB11,BB22,BB33,BB44

其中AA11,AA22,AA33,AA44列包含来自BB11,BB22,BB33,BB44的数据,只有BB55列具有其唯一数据。

我需要将这些数据格式化为以下格式

AA11,AA22,AA33,AA44,BB11,BB22,BB33,BB44,BB55

所有列都有其唯一数据的地方。另一种表达方式是我的分区(BB)正在整体架构下组合。但是我不需要将它们组合在一起,列不是等效的。 AA是与BB不同的数据集,具有不同的列数据。相反,我希望Glue仅在共享相同名称的列下合并列数据,而不是在分区模式下合并列数据,这可能吗?

如果没有,是否有一个可靠的自动化解决方案来分别解析这两个表并将它们联接在一起?现在,我有一个很大的S3存储桶,所有数据都在此存储。我想我可以为每个具有自己的搜寻器的数据集使用不同的S3存储桶,但这很快就会很麻烦。每次添加数据集时,join语句都需要与新的搜寻器一起更新。

老实说,也许用Lambda可以轻松完成整件事。只需让他们将数据上传到存储桶中,保留Site和Unit文件结构,然后以编程方式将所有CSV文件合并为一个大文件即可。然后用胶水分析该文件。

0 个答案:

没有答案