gpt4 book ai didi

amazon-web-services - AWS Glue Python 作业未创建新的数据目录分区

转载 作者:行者123 更新时间:2023-12-04 03:36:59 25 4
gpt4 key购买 nike

我使用 Glue Studio 创建了一个 AWS Glue 作业。
它从 Glue 数据目录中获取数据,进行一些转换,然后写入不同的数据目录。
在配置目标节点时,我启用了在运行后创建新分区的选项:
enter image description here
作业运行成功,数据以正确的分区文件夹结构写入 S3,但在实际数据目录表中没有创建新分区 - 我仍然需要运行 Glue Crawler 来创建它们。
生成的脚本中负责创建分区的代码是这样的(作业的最后两行):

DataSink0 = glueContext.write_dynamic_frame.from_catalog(frame = Transform4, database = "tick_test", table_name = "test_obj", transformation_ctx = "DataSink0", additional_options = {"updateBehavior":"LOG","partitionKeys":["date","provider"],"enableUpdateCatalog":True})
job.commit()
我究竟做错了什么?为什么不创建新分区?如何避免必须运行爬虫才能在 Athena 中获取数据?
我正在使用 Glue 2.0 - PySpark 2.4

最佳答案

正如 documentation 中突出显示的那样,还有将新分区添加到数据目录的限制 ,更具体地说,请确保您的用例不与以下任何内容相矛盾:

Only Amazon Simple Storage Service (Amazon S3) targets are supported.

Only the following formats are supported: json, csv, avro, andparquet.

To create or update tables with the parquet classification, you must utilize the AWS Glue optimized parquet writer for DynamicFrames.

When the updateBehavior is set to LOG, new partitions will be addedonly if the DynamicFrame schema is equivalent to or contains a subsetof the columns defined in the Data Catalog table's schema.

Your partitionKeys must be equivalent, and in the same order, betweenyour parameter passed in your ETL script and the partitionKeys in yourData Catalog table schema.

关于amazon-web-services - AWS Glue Python 作业未创建新的数据目录分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66697911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com