AWS Glue API 无法识别带有连字符的分区

che*_*g95 0 amazon-web-services aws-cli aws-glue

我在 S3 中有按类别和日期分区的数据,如下所示:

s3://mybucket/category=1/date=2018-08-30/data1.json
s3://mybucket/category=1/date=2018-08-31/data2.json
s3://mybucket/category=2/date=2018-08-30/data3.json
s3://mybucket/category=2/date=2018-08-31/data4.json
Run Code Online (Sandbox Code Playgroud)

运行爬网程序后,我的元数据表中有两个分区键:一个用于category,另一个用于date。我想使用GetPartitions API检索与某些键匹配的分区,因此我开始尝试使用 AWS CLI。如果我运行这个命令:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1" --region us-west-2

我按预期成功检索了分区。但是,我尝试了以下命令:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1 AND date=2018-08-30" --region us-west-2

得到的回应是

调用 GetPartitions 操作时发生错误 (InvalidInputException):不支持的表达式 '2018 - 08 - 30'

产生此错误的另一个命令是

aws glue get-partitions --database-name mydb --table-name mytable --expression category=1\ AND\ date=2018-08-30 --region us-west-2

我还尝试使用以下命令修改调用:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1 AND date=2018\-08\-30" --region us-west-2

这给了我错误

调用 GetPartitions 操作时发生错误 (InvalidInputException):第 1 行第 35 列出现词法错误。遇到:“\”(92),之后:“”

GetPartitions API 是否能够处理包含连字符的分区的表达式?如果是这样,正确的语法是什么?

che*_*g95 5

最初由 AWS Glue 中的爬网程序生成的分区将具有String元数据目录中的类型。虽然我的一些类别包含连字符,但它们位于 uuid(即category=so36-fkw1-...)中,因此它们不会被解释为表达式。另一方面,日期仅包含数字字符,-这是问题的根源。我可以通过将日期用单引号括起来来修复它,如下所示:

aws glue get-partitions --database-name mydb --table-name mytable --expression category=1\ AND\ date=\'2018-08-30\' --region us-west-2