我有一堆以CSV格式(无标题)存储在S3中的文件,但在许多情况下,每个文件只有一个记录。例如:
“ 6ad0638e-e7d3-4c33-8271-5b3972c6155f”,1532653200000
当我运行搜寻器时,它会为每个文件分隔的表创建一个
。问题:
谢谢
答案 0 :(得分:1)
我联系了AWS支持,这里是详细信息:
问题是由具有单个记录的文件引起的。默认情况下,Glue搜寻器使用LazySimpleSerde对CSV文件进行分类。 LazySimpleSerde需要至少一个换行符来标识CSV文件,这是其局限性。
解决此问题的正确方法是考虑使用Grok模式。
为了确认这一点,我最后用您的数据和自定义模式测试了一些方案。我已经创建了3个文件,其中一个文件名为file1.csv,两个记录为file2.csv,一个记录为file3.csv。另外,正确的Grok模式也应考虑用$即换行。
%{QUOTEDSTRING:rid:string},%{NUMBER:ts:long}$
根据我的观察,似乎该问题可能是由于搜寻器将较早的分类详细信息缓存。因此,我要求您创建一个新的搜寻器并将其指向目录中的新数据库。
答案 1 :(得分:0)
我有相同的“问题”。文档(Adding Classifiers to a Crawler)说:
内置CSV分类器
要被分类为CSV,表模式必须至少具有两列和两行数据。 如果有办法强迫它理解一行,那就太好了。
答案 2 :(得分:0)
您是否尝试设置“为每个S3路径创建一个架构”。在搜寻器配置中是否正确?如果设置了此字段,则搜寻器不会创建新的架构,而是更新现有的架构。 请参阅链接以获取更多详细信息。
https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-grouping-policy