猿问

AWS Glue ETL 作业缺少爬网程序可见的字段

我有一个由爬虫创建的表,指向存储在 s3 中的一些镶木地板文件。从 Glue 数据目录 GUI 中,我可以看到许多字段 (53)。


当我打开一个 ETL 开发端点并与一个 sagemaker 笔记本连接,加载同一个表并运行 printSchema 时,我看到使用下面的代码少得多的字段 (36)。


from pyspark.context import SparkContext

from awsglue.context import GlueContext, DynamicFrame


# Get the right stuff

glueContext = GlueContext(SparkContext.getOrCreate())


data = glueContext.create_dynamic_frame.from_catalog(database = "my_database", table_name = "my_table")


print('Fields: ', len(data.schema().fields))

data.printSchema()

仅返回 36 个字段。谁能告诉我如何访问缺少的字段?它似乎最常发生在人口稀少的领域。


编辑:AWS 论坛上这个悬而未决的问题似乎是由于同样的问题 - 显然 PySpark 试图推断它自己的架构,而不是使用爬虫发现的架构。


白猪掌柜的
浏览 227回答 3
3回答

慕标5832272

对于镶木地板文件,Glue 使用 Spark 的阅读器,因此依赖于从文件继承的架构,而不是使用爬虫创建的数据目录中的架构。如果源文件夹包含具有不同架构的文件,则 Glue 爬网程序会将其合并为一个架构,使其与您在 ETL 中看到的架构不同。

qq_花开花谢_0

您是否尝试过.create_dynamic_frame.from_options直接从 s3 存储桶读取?有时它的行为与 Crawler 不同。

元芳怎么了

您是否尝试过在 Crawler 的“输出 -> 配置选项(可选)”部分中“使用表中的元数据更新所有新的和现有的分区”?
随时随地看视频慕课网APP

相关分类

Python
我要回答