【问题标题】:Glue crawler is not combining data - also no visible data in tables胶水爬虫没有组合数据 - 表格中也没有可见数据
【发布时间】:2021-05-02 09:34:00
【问题描述】:

我正在测试这个架构:Kinesis Firehose → S3 → Glue → Athena。现在我使用的是 Kinesis 生成的虚拟数据,每行如下所示:{"ticker_symbol":"NFLX","sector":"TECHNOLOGY","change":-1.17,"price":97.83}

但是,有两个问题。首先,Glue Crawler 为每个文件创建一个单独的表。我读过如果架构匹配 Glue 应该只提供一个表。正如您在下面的屏幕截图中所见,架构是相同的。在 Crawler options 中,我尝试在 Create a single schema for each S3 path 上打勾,但没有任何变化。

文件也位于同一路径中,这导致我遇到第二个问题:查询这些表时,Athena 不显示任何数据。这可能是因为文件共享一个文件夹 - 我已经阅读过它here,第 1 点,并测试了几次。如果我从 S3 文件夹中删除除一个文件之外的所有文件并进行爬网,Athena 会显示数据。

我可以强制 Kinesis 将每个文件放在一个单独的文件夹中,或者强制 Glue 将这些数据记录在一个表中吗?

文件1:

文件2:

【问题讨论】:

    标签: amazon-web-services aws-glue amazon-athena amazon-kinesis aws-glue-data-catalog


    【解决方案1】:

    关于 AWS Glue 创建单独的表,可能有一些基于 AWS documentation 的原因:

    1. 确认这些文件使用与其他源数据相同的架构、格式和压缩类型。看来这不是您的问题,但仍要确保我建议您使用较小的文件进行测试,方法是删除每个文件中除少数几行之外的所有行。
    2. 通过选择为每个 S3 路径创建单个架构,在创建爬虫时组合兼容的架构。对于这种情况,文件架构应该相似,设置应该启用,数据应该兼容。如需更多信息,请参阅How to Create a Single Schema for Each Amazon S3 Include Path
    3. 使用 CSV 数据时,请确保始终使用标题。如果您的一些文件有标题而另一些没有,则爬虫会创建多个表

    另一个非常重要的一点是,你应该在根目录下有一个文件夹,在里面,你应该有分区子文件夹。如果您在 S3 存储桶级别有分区,则不会创建一个表。(Sandeep 在此Stackoverflow Question 中提到)

    我希望这可以帮助您解决问题。

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 2023-01-23
      • 2019-12-30
      • 1970-01-01
      • 2021-01-09
      • 2022-11-14
      相关资源
      最近更新 更多