AWS Athena从由GLUE爬虫输入的S3 CSV创建的表中返回零条记录

16

第一部分:

我尝试使用黏合剂爬虫在S3上加载的虚拟CSV文件中运行,它创建了一个表格,但是当我尝试在Athena中查看表格并查询时,它显示返回零条记录。

但是,在Athena中的ELB演示数据可以正常工作。

第二部分(场景):

假设我有一个Excel文件和一个描述数据存储方式和格式的数据词典,我想将这些数据转储到AWS Redshift中,最好的实现方式是什么?


1
更新问题,附上爬虫读取的CSV文件中的一些样本数据,并提及模式结构。不要只简单地提到“零条记录”返回。 - Madhukar Mohanraju
9个回答

29

我遇到了同样的问题。你需要给爬虫提供文件夹路径而不是实际文件名,并运行它。我尝试将文件夹名称提供给爬虫并且它可以正常工作。希望这可以帮助到你。让我知道。谢谢。


2
这对我有用。我遇到了同样的问题。然而,当我将每个数据放在自己的文件夹下并将爬虫指向父文件夹时,它就起作用了。我注意到的一件事是,以这种方式创建的表的表名不包含文件格式的名称,而我的先前尝试则包含。这可以用作视觉标识符,以识别表是否已正确读取。 - Prem
只有一个文件(例如csv)在存储桶中时,这将起作用。 - Rishabh Sahrawat

11

我也遇到了同样的问题。尝试在S3存储桶中为单个表创建一个单独的文件夹,然后重新运行Glue爬虫。您将在Glue数据目录中获得一个与S3存储桶文件夹名称相同的新表。


5

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


4

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

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


1
是的,这是一个正确的答案。Glue爬虫可以找到数据,但是当文件以_开头时,Athena无法工作。 - Jonathan

3
这是我的解决方案:我需要将所有的CSV文件移动到它们自己的文件夹中,仅仅将Glue Crawler指向父文件夹(对我来说是'csv/')是不够的。
csv/allergies.csv -> fails

csv/allergies/allergies.csv -> succeeds

然后,我只需将 AWS Glue Crawler 指向 csv/,所有内容都被成功解析了。


2
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 的 "include path" 中指定:

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

1
将粘合爬虫指向 S3 文件夹而不是实际文件即可解决问题。

1
在许多这样的情况下,使用 Glue Crawler 中的“排除模式”对我很有帮助。
确保不直接将爬虫指向文件,而是将其指向目录,并且即使这样做时没有记录,排除模式也能提供帮助。您需要设计一些模式,只有您想要获取的文件才被爬取,其余文件都被排除。(建议这样做而不是为每个文件创建不同的目录,在生产 bucket 中,大多数情况下进行此类更改是不可行的)
我有一个 S3 存储桶中的数据!有多个目录,每个目录内部有压缩的 Parquet 文件和 JSON 文件。JSON 文件导致了问题。
因此,我在包含许多目录的主目录上运行了爬虫,并在“排除模式”中给出了- * / * .json
这次,它没有为 JSON 文件创建任何表格,我能够使用 Athena 查看表格的记录。
参考链接 - https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接