Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Glue Crawlers-如何处理可能只包含字符串的大型CSV目录结构_Amazon Web Services_Aws Glue_Aws Glue Data Catalog - Fatal编程技术网

Amazon web services AWS Glue Crawlers-如何处理可能只包含字符串的大型CSV目录结构

Amazon web services AWS Glue Crawlers-如何处理可能只包含字符串的大型CSV目录结构,amazon-web-services,aws-glue,aws-glue-data-catalog,Amazon Web Services,Aws Glue,Aws Glue Data Catalog,我们已经在这里呆了几天,非常感谢您的帮助 背景: 我正在尝试创建1+粘合爬虫来爬网以下S3“目录”结构: . +-- _source1 | +-- _item1 | | +-- _2019 #year | | | +-- _08 #month | | | | +-- _30 #day | | | | | +-- FILE1.csv #files | | | | | +-- FILE2.csv | |

我们已经在这里呆了几天,非常感谢您的帮助

背景: 我正在尝试创建1+粘合爬虫来爬网以下S3“目录”结构:

.
+-- _source1
|   +-- _item1
|   |   +-- _2019  #year
|   |   |   +-- _08  #month
|   |   |   |   +-- _30  #day
|   |   |   |   |   +-- FILE1.csv  #files
|   |   |   |   |   +-- FILE2.csv
|   |   |   |   +-- _31
|   |   |   |   |   +-- FILE1.csv
|   |   |   |   |   +-- FILE2.csv
|   |   |   +-- _09
|   |   |   |   +-- _01
|   |   |   |   +-- _02
|   +-- _item2
|   |   +-- _2019
|   |   |   +-- _08
|   |   |   |   +-- _30
|   |   |   |   +-- _31
|   |   |   +-- _09
|   |   |   |   +-- _01
|   |   |   |   +-- _02
+-- _source2
|   +-- ....
........  # and so on...
这适用于多个源,每个源可能有30多个项目,其中每个都有年/月/日目录结构

所有文件都是CSV,文件一旦在S3中就不应该更改。但是,每个项目文件夹中文件的架构将来可能会添加列

  • 与2019/09/01/FILE.csv相比,
    2019/12/01/FILE.csv
    可能有更多的列

我所做的:

到目前为止,在我的测试中,在
级目录(见上文)创建的爬虫程序工作得非常好,只要没有CSV只包含字符串类型的列
这是由于以下限制:

标题行必须与数据行完全不同。要确定这一点,必须将一行或多行解析为字符串类型以外的其他行。如果所有列都是字符串类型,则第一行数据与后续行之间的差异不足以用作标题

通常,我认为您可以通过创建一个需要特定CSV模式的自定义分类器来解决这个问题,但鉴于我可能需要爬网200多个项目(不同的模式),我希望避免这种情况


建议的解决方案:

  • 理想情况下,我希望强制我的爬虫程序解释 每个CSV都作为标题,但这似乎不可能
  • 在每个CSV中添加一个虚拟INT列,以强制爬虫程序读取CSV标题,并删除/忽略该列。(看起来很刻薄)
  • 找到另一种有效的文件格式(需要在我的ETL管道中进行更改)
  • 不要用胶水

  • 再次感谢您的帮助

    发现了问题:为了使更新的glue crawler分类器生效,必须创建一个新的爬虫并应用更新的分类器。据我所知,AWS文档中没有明确提到这一点,我只看到有人提到它

    在测试的早期,我修改了一个指定“Has Columns”的现有csv分类器,但从未创建一个新的爬虫程序来应用修改后的分类器。一旦我创建了一个新的爬虫程序并应用了分类器,所有的数据目录表都按照预期创建,而不管列类型如何

    TL;DR:修改的分类器将不会生效,除非它们应用于新的爬虫程序