AWS Athena从来自S3

时间:2017-11-13 14:41:44

标签: amazon-web-services csv amazon-redshift amazon-athena aws-glue

第一部分:

我尝试使用胶水爬虫在s3中加载的虚拟csv上运行它创建了一个表但是当我在athena中尝试查看表并查询它时显示返回零记录。

但是,雅典娜的ELB演示数据运行良好。

第二部分(情景:)

假设我有一个excel文件和数据字典,说明数据在该文件中的存储方式和格式,我希望将这些数据转储到AWS Redshift中实现这一目标的最佳方法是什么?

8 个答案:

答案 0 :(得分:11)

我遇到了同样的问题。您需要将文件夹路径而不是真实文件名提供给爬网程序并运行它。我尝试将文件夹名称提供给爬虫并且它有效。希望这可以帮助。让我知道。谢谢,

答案 1 :(得分:3)

我遇到了同样的问题。尝试为s3存储桶中的单个表创建单独的文件夹,而不是重新运行glue crawler。您将在粘贴数据目录中获取一个与s3存储桶文件夹名称相同的新表。

答案 2 :(得分:1)

再次删除Crawler创建Crawler(在s3中只有一个csv文件不可用,并运行爬虫) 重要提示 一个CSV文件运行它我们可以查看Athena中的记录。

答案 3 :(得分:0)

我确实提供了S3文件夹路径而不是文件名,但仍然无法让Athena返回任何记录(“归还零记录”,“已扫描数据:0KB”)。

发现问题是输入文件(我的旋转日志文件自动从Elastic Beanstalk上传到S3)以下划线(_)开头,例如_var_log_nginx_rotated_access.log1534237261.gz!显然,这是不允许的。

答案 4 :(得分:0)

解决方案:即使folder中有很多folder,也要选择files的路径。这将生成一个表并显示数据。

答案 5 :(得分:0)

因此在许多此类情况下,在Glue Crawler中使用EXCLUDE PATTERN可以帮助我。

这可以确保我们应该将爬网程序指向目录,而不是直接将爬网程序指向该文件,即使在没有任何记录的情况下这样做,Exclude Pattern也可以解决。 您将必须设计一些模式,通过该模式仅将要爬网的文件和其余文件排除在外。 (建议这样做,而不是在生产存储桶中的大多数时间为每个文件创建不同的目录,这样做不可行)

我在S3存储桶中有数据!有多个目录,每个目录中都有活泼的镶木地板文件和json文件。 json文件引起了问题。

因此,我在包含许多目录的主目录上和我给出的EXCLUDE PATTERN中运行了搜寻器-* / * .json

这次,它没有为json文件创建任何表,并且我能够使用Athena查看该表的记录。

以供参考-https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html

答案 6 :(得分:0)

s3存储桶/文件夹的结构非常重要:

NameU

并在粘合履带的“包含路径”中指定:

s3://<bucketname>/<data-folder>/
    /<type-1-[CSVs|Parquets etc]>/<files.[csv or parquet]>
    /<type-2-[CSVs|Parquets etc]>/<files.[csv or parquet]>
    ...
    /<type-N-[CSVs|Parquets etc]>/<files.[csv or parquet]>

答案 7 :(得分:0)

将胶水爬虫指向 S3 文件夹而不是实际文件。