Amazon redshift AWS红移-无法将外部表合并到本地目录中

Amazon redshift AWS红移-无法将外部表合并到本地目录中,amazon-redshift,amazon-redshift-spectrum,Amazon Redshift,Amazon Redshift Spectrum,我们的一个外部表出现红移问题 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

我们的一个外部表出现红移问题

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数据库的新外部模式,但出现了相同的问题

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

外部表中有许多列超出了红移限制:

  • 本地红移表的每个表1600列
  • 1598列用于红移光谱外部表

您可以通过查询
svv\u external\u columns

来验证外部表的列数

除了上述解决方案之外,还有几个线程

  • (乔的解决方案)
  • (表示修复已合并)
  • 我在IAM角色拥有AWS Glue完全访问权限的情况下面临这个问题。我特意添加了AthenaFullAccess,并重新启动了红移集群,解决了这个问题。不确定是什么导致了这个问题,以及它是如何在这个案例中得到解决的

  • 您可以在红移端检查以下视图:SVV_外部_模式、SVV_外部_表、SVV_外部_分区、SVV_外部_列。也可能是这样的:SVL_S3QUERY_Summary我的列数有限(50),但我仍然面临这个问题,可能是什么问题?表中是否有嵌套的数据列?您可以通过Redshift论坛()向我发送一条包含集群详细信息的私人消息,我将进一步调查。没有嵌套列,这是从频谱表中直接选择的