繁体   English   中英

从AWS胶水作业中的数据源中读取标题

[英]Read Headers from Data Source in an AWS Glue Job

我有一个AWS Glue作业,它从数据源读取如下:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "dev-data", table_name = "contacts", transformation_ctx = "datasource0")

但是当我在动态帧上调用.toDF()时,标题是“col0”,“col1”,“col2”等,而我的实际标题位于数据帧的第一行。

注意 - 我无法手动设置它们,因为数据源中的列是可变的并且在循环中的列上迭代以设置它们导致错误,因为您必须多次设置相同的数据帧变量,这可以' t处理。

从数据源读取时如何捕获标题?

事实证明这是胶水爬虫中的一个错误,它们还不支持标题。 我使用的解决方法是完成爬行数据的动作,然后当爬虫完成时,我有一个lambda触发爬虫完成云监视事件,lambda启动直接从s3读取的粘合作业。 当胶水被固定以支持读取标题时,我可以切换出我在标题中读取的方式。

你可以尝试使用Header param。 例如

dyF = glueContext.create_dynamic_frame.from_options(
    's3',
    {'paths': ['s3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv']},
    'csv',
    {'withHeader': True})

可以在此处找到相关文档

我知道这篇文章很老,但我遇到了类似的问题,花了太长时间搞清楚问题是什么。 想要分享我的解决方案,以防它对别人有帮助!

我在AWS上使用GUI并忘记在运行之前向爬虫添加正确的分类器。 这导致AWS Glue错误地检测到数据类型(它们大部分以字符串形式出现)并且未检测到列名称(它们以col1,col2等形式出现)。 您可以在“爬虫”下的“分类器”中创建分类器。 然后,在设置抓取工具时,将分类器添加到底部的“选定分类器”部分。

文档: https//docs.aws.amazon.com/glue/latest/dg/add-classifier.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM