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



我在 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

运行爬网程序后,我的元数据表中有两个分区键:一个用于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

回应是

调用 获取分区操作:不支持的表达式"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 是否能够处理包含连字符的分区的表达式?如果是这样,正确的语法是什么?

最初由 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

最新更新