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 是否能够处理包含连字符的分区的表达式?如果是这样,正确的语法是什么?
最初由 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
| 归档时间: |
|
| 查看次数: |
2825 次 |
| 最近记录: |