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

8iwquhpp  于 2023-02-06  发布在  其他
关注(0)|答案(9)|浏览(172)

第一部分:

我试过glue crawler在s3中加载的dummy csv上运行,它创建了一个表,但当我尝试在athena中查看表并查询它时,它显示返回零记录。
但是Athena中ELB的演示数据工作正常。

第二部分(设想方案:)

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

p5fdfcr1

p5fdfcr11#

我遇到了同样的问题。你需要给予文件夹路径,而不是真实的的文件名的爬虫和运行它。我尝试与饲料文件夹名称的爬虫和它的工作。希望这有帮助。让我知道。谢谢,

46scxncf

46scxncf2#

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

pokxtpni

pokxtpni3#

删除Crawler文件并再次创建Crawler(在s3中仅一个csv文件不可用并运行Crawler)重要说明*一个CSV文件**运行它,我们可以在Athena中查看记录。

ztigrdn8

ztigrdn84#

我确实提供了S3文件夹路径而不是文件名,但仍然无法让Athena返回任何记录(“返回零条记录”、“扫描的数据:0KB”)。
结果发现问题是输入文件(我的旋转日志文件自动从Elastic Beanstalk上传到S3)以下划线(_)开头,例如_var_log_nginx_rotated_access.log1534237261.gz

ia2d9nvy

ia2d9nvy5#

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]>

并在Glue Crawler的“包含路径”中指定:

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

p3rjfoxz6#

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

cuxqih21

cuxqih217#

因此,在许多这样的情况下,在Glue Crawler中使用EXCLUDE PATTERN对我很有帮助。
这可以肯定,我们不应该直接将爬虫指向文件,而应该将其指向目录,甚至在我们没有获得任何记录时也应该这样做,排除模式来拯救。你将不得不设计一些模式,只有你想要的文件被爬行,其余的被排除。(建议这样做,而不是为每个文件创建不同的目录,并且大多数情况下在生产存储桶中,这样做是不可行的)
我有数据在S3桶!有多个目录和每个目录内有snappyParquet文件和json文件。json文件是造成这个问题。
因此,我在包含许多目录的主目录上运行了爬行器,并在我给出的EXCLUDEPATTERN中运行了- * / *.json
这一次,它没有为json文件创建任何表,我能够使用Athena查看表的记录。
供参考-https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html

lstz6jyr

lstz6jyr8#

将glue crawler指向S3文件夹而不是实际文件就可以了。

fumotvh3

fumotvh39#

以下是对我有效的方法:我需要将所有的CSV移到它们自己的文件夹中,仅仅将Glue Crawler指向父文件夹(对我来说是"csv/")是不够的。

csv/allergies.csv -> fails

csv/allergies/allergies.csv -> succeeds

然后,我只是将AWS Glue Crawler指向csv/,一切都解析得很好。

相关问题