正确访问 Glue 中的数据目录 table
Accessing datacatalog table in Glue properly
我在 Athena 中创建了一个 table,没有来自 S3 源的爬虫。它出现在我的数据目录中。但是,当我尝试通过 Glue ETL 中的 python 作业访问它时,它显示它没有列或任何数据。访问某列时弹出如下错误:AttributeError: 'DataFrame' object has no attribute '<COLUMN-NAME>'
.
我正在尝试按照胶水方式访问动态框架:
datasource = glueContext.create_dynamic_frame.from_catalog(
database="datacatalog_database",
table_name="table_name",
transformation_ctx="datasource"
)
print(f"Count: {datasource.count()}")
print(f"Schema: {datasource.schema()}")
以上日志输出:Count: 0
& Schema: StructType([], {})
,其中 Athena table 显示我有大约 800,000 行。
旁注:
- 相关的 ETL 作业已附加
AWSGlueServiceRole
。
- 我也尝试了 Glue 可视化编辑器,它显示了数据目录 database/table,但不幸的是,同样的错误。
看起来 S3 存储桶中有多个嵌套文件夹。要让 Glue 读取这些文件夹,您需要添加一个标志,将 additional_options = {"recurse": True}
添加到您的 from_catalog()。这将有助于从 s3 文件中递归读取记录。
我在 Athena 中创建了一个 table,没有来自 S3 源的爬虫。它出现在我的数据目录中。但是,当我尝试通过 Glue ETL 中的 python 作业访问它时,它显示它没有列或任何数据。访问某列时弹出如下错误:AttributeError: 'DataFrame' object has no attribute '<COLUMN-NAME>'
.
我正在尝试按照胶水方式访问动态框架:
datasource = glueContext.create_dynamic_frame.from_catalog(
database="datacatalog_database",
table_name="table_name",
transformation_ctx="datasource"
)
print(f"Count: {datasource.count()}")
print(f"Schema: {datasource.schema()}")
以上日志输出:Count: 0
& Schema: StructType([], {})
,其中 Athena table 显示我有大约 800,000 行。
旁注:
- 相关的 ETL 作业已附加
AWSGlueServiceRole
。 - 我也尝试了 Glue 可视化编辑器,它显示了数据目录 database/table,但不幸的是,同样的错误。
看起来 S3 存储桶中有多个嵌套文件夹。要让 Glue 读取这些文件夹,您需要添加一个标志,将 additional_options = {"recurse": True}
添加到您的 from_catalog()。这将有助于从 s3 文件中递归读取记录。