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

标签 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 数据库的新外部架构,但出现了同样的问题。

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

最佳答案

As per the forum post about the same:

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

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

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

关于amazon-redshift - AWS Redshift - 无法将外部表合并到本地目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051804/

相关文章:

amazon-web-services - 使用 Redshift Spectrum 的步骤是什么?

amazon-redshift-spectrum - Redshift 频谱显示所有行的 NULL 值

amazon-redshift - 如何解释查询计划中的巨大成本

sql - postgresql中的唯一随机整数

PostgreSQL 窗口函数和日期之间的区别

amazon-redshift-spectrum - 对我的 Amazon Spectrum 表进行分区时遇到问题

amazon-web-services - 与 Redshift 一起使用时,将数据存储在 DynamoDB 中与 S3 中相比有何优势?

amazon-web-services - Redshift Spectrum 如何扫描数据?

google-analytics - 将 Google Analytics 数据提取到 S3 或 Redshift

python - 使用 Pandas 从 Redshift 读取 bigint (int8) 列数据,无需科学记数法