【问题标题】:How to create AWS Athena table via Glue crawler when the s3 data store has both json and .gz compressed files?当 s3 数据存储同时具有 json 和 .gz 压缩文件时,如何通过 Glue 爬虫创建 AWS Athena 表?
【发布时间】:2019-09-14 19:43:37
【问题描述】:

我的预期解决方案有两个问题:

1。 我的 S3 存储结构如下:

mainfolder/date=2019-01-01/hour=14/abcd.json
mainfolder/date=2019-01-01/hour=13/abcd2.json.gz
...
mainfolder/date=2019-01-15/hour=13/abcd74.json.gz

所有 json 文件都有相同的架构,我想创建一个指向 mainfolder/ 的爬虫,然后它可以在 Athena 中创建一个表进行查询。

我已经尝试过只使用一种文件格式,例如如果文件只是 json 或只是 gz 则爬虫工作完美,但我正在寻找一种解决方案,通过它我可以自动化任何类型的文件处理。我愿意编写自定义脚本或任何开箱即用的解决方案,但需要从哪里开始。

2。 第二个问题是我的 json 数据有一个字段(列),爬虫将其解释为 struct 数据,但我想将该字段类型设为 string。原因是如果类型保持 struct 日期/小时分区会出现不匹配错误,因为显然 struct 数据在文件中具有不同的内部架构。我试图制作一个自定义分类器,但那里没有描述数据类型的选项。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-athena aws-glue


    【解决方案1】:

    我建议完全跳过使用爬虫。以我的经验,胶水爬行器不值得它们引起的问题。使用 Glue API 创建表很容易,添加分区也是如此。 API 有点冗长,尤其是添加分区,但它比试图让爬虫做你想让它做的事情要痛苦得多。

    当然,您也可以create the table from Athena,这样您就可以确保您获得与 Athena 一起使用的表格(否则您需要正确处理一些细节)。 Adding partitions 通过 Athena 使用 SQL 也不那么冗长,但速度较慢。

    【讨论】:

      【解决方案2】:

      Crawler 不会同时获取压缩和未压缩的数据,因此它不能开箱即用。 最好用胶水编写火花作业并使用 spark.read()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 2022-08-21
        • 2022-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多