无法使用Glue数据目录让分区正常工作

0

【以下的问题经过翻译处理】 我有一些上传到单个存储桶的S3文件。没有文件夹或其他内容,只是每小时1个文件上传到这个存储桶中。 我在这些文件上运行一个Glue ETL作业,进行一些转换,并将数据插入到不同存储桶中存储的Glue数据目录中。 这样,我可以使用Athena查询该Glue数据目录。

我想做的是将文件存储在使用分区的Data Catalog的S3文件夹中,格式为YEAR/MONTH/DAY。尽管源数据只是每小时上传的文件而没有分区,但我想在Data Catalog中将它们存储为分区。因此,在Glue ETL期间,我从文件中提取了YEAR,MONTH,DAY,并相应地在我的Data Catalog表中创建了列,并将它们标记为分区:

分区1 YEAR 分区2 MONTH 分区3 DAY

这些列的值是正确的,我已经验证过了。

创建分区后,我在表上运行了MSCK REPAIR TABLE命令,结果为"Query Ok."。

然后我运行了Glue ETL作业。当我查看S3存储桶时,我看不到创建的文件夹。我只看到常规的r-part文件。当我单击表模式时,它显示YEAR,MONTH,DAY列已标记为分区,但当我单击View Partitions时,它仅显示:

year month day 没有找到分区

我该怎么办?这些只是CSV文件。我无法控制将原始数据上传到S3的过程,它将仅在存储桶中存储每小时的文件。我可以控制ETL作业和Data Catalog。当我尝试在创建分区并运行MSCK REPAIR TABLE后查询时,没有返回数据。但是我可以进入Data Catalog存储桶并找到其中一个

profile picture
EXPERTE
gefragt vor 6 Monaten8 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 我已经弄清楚了这个问题。我错过了一个步骤,需要将additionalOptions添加到我的sink中,如下所述: https://medium.com/analytics-vidhya/add-new-partitions-in-aws-glue-data-catalog-from-aws-glue-job-79b0442b17af

#参数“enableUpdateCatalog”告诉aws glue工作更新glue数据目录,因为创建新分区
additionalOptions = {"enableUpdateCatalog": True}
#定义分区键
additionalOptions["partitionKeys"] = ["year", "month","day"]

做了这个之后,分区(嵌套目录)被创建。

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen