gpt4 book ai didi

aws-glue - 使用手动创建的表运行时,AwS 胶水作业读取 0 个文件

转载 作者:行者123 更新时间:2023-12-05 02:08:28 27 4
gpt4 key购买 nike

我想运行胶水作业来对从 s3 到 Postgres DB 的许多 csv 文件进行 ETL 处理。每天都有新文件写入 s3 源存储桶。当我为这些文件运行爬虫程序以生成带有模式的表时,我得到了很多表,而不是胶水数据目录中的一个表,这意味着爬虫程序无法将这些文件的模式识别为相同的。可能是因为有很多文件只有标题而没有内容。

因此,当我使用向导创建 glue 作业时,当系统询问要使用哪个表时,我只从 glue Data 目录(基于最大的 csv 文件创建)中选择一个表。结果,在数据库中,我只有来自那个最大文件的数据,而不是来自所有 csv 文件的数据。我猜这是因为爬虫在胶水数据目录中创建这些表时,还保存了与该表对应的文件列表,我在 s3:/aws-glue-temporary-000xxxxx-us-east-2 上找到了这些文件/admin/partitionlisting/script_name/xxxxx/对于每个粘合作业,都有 datasource0.input-files.json 文件,其内容如 {"path":"s3://bucket1/customer/dt=2020-02-03/","files":["s3://bucket1/customer/dt=2020-02-03/file1.csv"]}]

当我检查当我尝试在胶水数据目录中手动创建模式表,并将其分配给胶水作业脚本时,希望 s3 路径中的所有文件都将被处理,它不会读取任何文件,并且在日志中我明白了

- Skipping Partition {}
as no new files detected @ s3://bucket1/customer/ / or path does not exist

当我检查相应的 datasource0.input-files.json 时,它没有任何文件:[{"path":"s3://bucket1/customer/","files":[ ]}]

我做错了什么?如何使用手动创建的模式表制作胶水作业脚本读取所选 s3 路径中的所有文件?或者是否可以仅使用许多自动创建的其中一个包含所有文件的模式表(不仅基于一个模式)?

最佳答案

可能是您在启用书签的情况下运行胶水作业。您最好不要使用书签,并且考虑到您是手动设置所有内容而不是通过爬虫,因此在提取数据时也不要指定转换上下文。此外,如果您有分区,您还应该手动添加分区定义。

关于aws-glue - 使用手动创建的表运行时,AwS 胶水作业读取 0 个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60872998/

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