Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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 胶水-书签不';无法识别较新分区中的文件_Amazon Web Services_Amazon S3_Aws Glue_Aws Glue Data Catalog_Aws Glue Spark - Fatal编程技术网

Amazon web services 胶水-书签不';无法识别较新分区中的文件

Amazon web services 胶水-书签不';无法识别较新分区中的文件,amazon-web-services,amazon-s3,aws-glue,aws-glue-data-catalog,aws-glue-spark,Amazon Web Services,Amazon S3,Aws Glue,Aws Glue Data Catalog,Aws Glue Spark,我有一个胶水作业,从一个S3存储桶读取数据,进行转换,并将结果上传到另一个S3存储桶中 下面是myaws glue get job书签——job name xx返回的内容 JobBookmark": "{\"datasource0\":{\"jsonClass\":\"HadoopDataSourceJobBookmarkState\",\"timestamps\":{\"RUN\&qu

我有一个胶水作业,从一个S3存储桶读取数据,进行转换,并将结果上传到另一个S3存储桶中

下面是my
aws glue get job书签——job name xx
返回的内容

JobBookmark": "{\"datasource0\":{\"jsonClass\":\"HadoopDataSourceJobBookmarkState\",\"timestamps\":{\"RUN\":\"4\",\"HIGH_BAND\":\"900000\",\"CURR_LATEST_PARTITION\":\"1618957000000\",\"CURR_LATEST_PARTITIONS\":\"s3://XXYY/2021/04/20/16/\",\"CURR_RUN_START_TIME\":\"2021-04-20T22:43:19.304Z\",\"INCLUDE_LIST\":\"\"}}}"
如您所见,我的S3的结构为bucketname/yyyy/mm/dd/HH。如上所示,书签设置为前缀2021/04/20/16

现在,如果以相同的前缀添加另一个文件,则会对其进行处理

但是,如果有一个较新的分区,比如2021/04/20/17,并且其中有一个文件,那么书签就不会拾取它

我的脚本非常简单,大部分是自动生成的,因为我只是在测试这个特性

我的表的位置在最顶层指定为S3://xxyy


感谢您的阅读。

这是因为glue在我们将其添加到Athena之前对更新的分区一无所知。我们可以修复该表,或者在较新的文件夹($$)上再次运行爬虫程序,或者更改该表并添加分区。选项3最适合不经常更改的模式

alter table xxyy
add partition (partition_0=2021,partition_1=04,partition_2=21,partition_3=22)
location 's3://xxyy/2021/04/21/22/'
最棒的是,我们可以用更新的分区“预先填充”表,即使S3中还不存在这样的分区

但这有点违反直觉。希望AWS能够解决这个问题,所以我们不需要对类似的用例采取任何行动