AWS Redshift - 无法将外部表合并到本地目录中

时间:2018-04-26 21:03:07

标签: amazon-redshift amazon-redshift-spectrum

在redshift中遇到我们的一个外部表有问题。

我们在AWS Glue中有超过300个表,这些表已作为名为events的外部模式添加到我们的redshift集群中。 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数据库的新外部模式,但同样的问题也出现了。

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

2 个答案:

答案 0 :(得分:1)

As per the forum post about the same:

外部表格的列数超过了Redshift限制:

  • 本地Redshift表每桌1,600列
  • 用于Redshift Spectrum外部表的1,598列

您可以通过查询svv_external_columns

来验证外部表的列数

答案 1 :(得分: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 Full Access的IAM角色时遇到了这个问题。我故意添加了AthenaFullAccess并重新启动了解决该问题的Redshift集群。在这种情况下,不确定导致问题的原因及解决方法