Amazon web services AWS Athena从S3的GLUE Crawler输入csv创建的表返回零记录

Amazon web services AWS Athena从S3的GLUE Crawler输入csv创建的表返回零记录,amazon-web-services,csv,amazon-redshift,amazon-athena,aws-glue,Amazon Web Services,Csv,Amazon Redshift,Amazon Athena,Aws Glue,第一部分: 我尝试在s3中加载的虚拟csv上运行glue crawler,它创建了一个表,但当我尝试在athena中查看表并查询时,它显示返回的记录为零 但雅典娜ELB的演示数据运行良好 第二部分(场景:) 假设我有一个excel文件和数据字典,说明该文件中存储的数据的方式和格式,我希望将该数据转储到AWS Redshift中,实现这一点的最佳方法是什么?删除爬虫,再次创建爬虫(在s3中只有一个csv文件不可用,请运行爬虫) 重要提示 一个CSV文件运行它,我们可以查看雅典娜的记录。我也遇到过同

第一部分:

我尝试在s3中加载的虚拟csv上运行glue crawler,它创建了一个表,但当我尝试在athena中查看表并查询时,它显示返回的记录为零

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

第二部分(场景:)


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

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

我也遇到过同样的问题。您需要为爬虫程序提供文件夹路径,而不是真正的文件名,然后运行它。我试着将文件夹名添加到爬虫,结果成功了。希望这有帮助。让我知道。谢谢,

我也遇到过同样的问题。尝试为s3 bucket中的单个表创建单独的文件夹,而不是重新运行glue crawler。您将在glue data catalog中获得一个与s3 bucket文件夹名称相同的新表。

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


原来问题是输入文件(我的旋转日志文件从Elastic Beanstalk自动上传到S3)以下划线(
\uuu
)开头例如,
\u var\u log\u nginx\u rotated\u access.log1534237261.gz
!显然这是不允许的。

解决方案:选择
文件夹的路径
,即使在
文件夹
中有许多
文件
。这将生成一个表并显示数据。

因此在许多此类情况下,在Glue Crawler中使用排除模式有助于e

这是肯定的,我们不应该直接将爬虫指向文件,而应该将它指向目录,即使这样做,当我们没有得到任何记录时,排除模式也会起到解救作用。 您必须设计一些模式,仅对您想要的文件进行爬网,其余文件则被排除在外。(建议这样做,而不是为每个文件创建不同的目录,而且大多数情况下,在生产bucket中,这样做是不可行的)

我在S3 bucket中有数据!有多个目录,每个目录中都有snappy parquet文件和json文件。json文件导致了问题

因此,我在包含许多目录的主目录上运行爬虫程序,并使用我给出的排除模式-*/*.json

这一次,它没有为json文件创建任何表,我可以使用Athena查看表的记录


参考-

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

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]>
s3:////
//
//
...
//
并在胶水爬虫的“包含路径”中指定:

s3://<bucketname e.g my-s3-bucket-ewhbfhvf>/<data-folder e.g data>
s3:///

将glue crawler指向S3文件夹,而不是acutal文件,这样做了。

使用爬虫读取的csv文件中的一些示例数据更新问题,并提及架构结构。不要只是简单地提及返回的零记录。是的,这是一个正确答案。glue crawler可以找到数据,但Athena可以找到文件以开头时不起作用_