【问题标题】:AWS Glue Catalog unable to detect parquet files, creates root path as a single table insteadAWS Glue Catalog 无法检测 parquet 文件,而是将根路径创建为单个表
【发布时间】:2019-08-19 17:18:22
【问题描述】:

我有一个以 parquet 格式存储在 AWS S3 中的 500 多个表的列表。结构如下:

aws-bucket/
└── parquet/
    └── table1/t1.parquet
    └── table2/t2.parquet
    └── table3/t3.parquet
    └── table4/t4.parquet
    └── table5/t5.parquet
    └── table6/t6.parquet
    └── table7/t7.parquet
    └── table8/t8.parquet

当我在“s3://aws-bucket/parquet/”上运行 Glue Crawler 并尝试创建 Athena 数据库时,它只创建了一个名为 parquet 的表,而不是创建所有 500 多个表。我没有尝试对爬虫参数进行任何自定义。

请帮忙。

【问题讨论】:

    标签: amazon-web-services parquet aws-glue aws-glue-data-catalog


    【解决方案1】:

    查看https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html?icmpid=docs_glue_console#crawler-grouping-policy

    S3 数据的分组行为(可选)

    为每个 S3 路径创建一个架构

    默认情况下,当爬虫为存储在 S3 中的数据定义表时,它会同时考虑数据兼容性和模式相似性。选中此复选框可将兼容模式分组到提供包含路径下所有 S3 对象的单个表定义中。仍将考虑其他标准来确定正确的分组。

    在胶水爬虫控制台中选中此选项。它将创建 500 多个表

    【讨论】:

    • 我的朋友已经尝试过这个选项,它也不起作用。它在 Athena DB 中创建了相同的 parquet 表,并且具有更多、更多的列(可能从每个表中获取列)。这是错误:您的查询有以下错误:HIVE_INVALID_METADATA:表镶木地板的 Hive 元数据无效:表描述符包含重复列
    • 最喜欢它包含两列的相同名称。您是否在通过爬虫创建表或在 athena 中运行查询时遇到错误?我相信这是第二个。共享胶水目录中的模式以供进一步分析
    • 第二种情况,毫无疑问。是否有将多个 S3 源添加到特定爬虫的编程方式?如果是这样,那么我可以运行一个 Lambda 函数来获取该位置中所有对象的完整路径,并将它们作为单独的源传递给爬虫。我在这种场景的文档中看到的清晰度非常低,同样的教程视频也更少。
    • 只能包含和排除模式。您不能在爬虫中添加多个 s3 源
    • 您可以将 S3 添加为数据存储。您可以根据需要使用“添加另一个数据存储”添加任意数量的 S3 路径。正在考虑是否可以使用 AWS Lambda 函数、python 代码构建所有表路径的列表。
    猜你喜欢
    • 2020-01-17
    • 2020-01-22
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多