3

我们在 redshift 中的一个外部表出现问题。

我们在 AWS Glue 中有 300 多个表,这些表已作为名为events. 中的大多数表events都可以很好地查询。但是在查询其中一个调用的表时,item_loaded 我们会收到以下错误;

select * from events.item_loaded limit 1;
ERROR:  XX000: Failed to incorporate external table "events"."item_loaded" into local catalog.
LOCATION:  localize_external_table, /home/ec2-user/padb/src/external_catalog/external_catalog_api.cpp:358

奇怪的是它们在目录中。

select *
from SVV_EXTERNAL_TABLES
where tablename = 'item_loaded';

-[ RECORD 1 ]-----+------------------------------------------
schemaname        | events
tablename         | item_loaded
location          | s3://my_bucket/item_loaded
input_format      | org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
output_format     | org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
serialization_lib | org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe 
serde_parameters  | {"serialization.format":"1"}
compressed        | 0
parameters        | {"EXTERNAL":"TRUE","parquet.compress":"SNAPPY","transient_lastDdlTime":"1504792238"}

AFAICT,该表的配置方式与相同模式中的其他表的配置方式完全相同,这些表运行良好。我尝试重新创建一个指向同一个 AWS Glue 数据库的新外部架构,但出现了同样的问题。

我还能检查什么?是否有任何可能导致表从目录中删除的情况?

4

3 回答 3

1

根据论坛帖子大致相同:

外部表有许多列超出 Redshift 限制:

  • 本地 Redshift 表的每个表 1,600 列
  • Redshift Spectrum 外部表的 1,598 列

您可以通过查询来验证外部表的列数svv_external_columns

于 2018-05-01T14:54:18.177 回答
1

我最近遇到了这个问题,

除了上述解决方案之外,还有一些线程

  1. https://forums.aws.amazon.com/message.jspa?messageID=845538&tstart=0(Joe的解决方案)
  2. https://forums.aws.amazon.com/thread.jspa?messageID=780552(表示已合并修复)
  3. 我在拥有 AWS Glue 完全访问权限的 IAM 角色时遇到了这个问题。我还特意添加了 AthenaFullAccess 并重新启动了解决问题的 Redshift 集群。不确定是什么导致了问题以及在这种情况下如何解决
于 2018-05-11T06:58:43.773 回答
0

如果配置中有拼写错误,也会发生这种情况。对于前以下失败:

SECRET_ARN ' arn:aws:secretsmanager:us-east-1:123:secret:stage/data/redshift-rds'

和以下作品

SECRET_ARN 'arn:aws:secretsmanager:us-east-1:123:secret:stage/data/redshift-rds'

注意 arn 开头的额外空格

于 2022-02-11T09:51:06.327 回答