繁体   English   中英

Redshift 显示外部表的 0 行,但在 Athena 中可以查看数据

[英]Redshift showing 0 rows for external table, though data is viewable in Athena

我在 Redshift 中创建了一个外部表,然后将一些数据添加到指定的 S3 文件夹中。 我可以在 Athena 中完美地查看所有数据,但我似乎无法从 Redshift 中查询它。 奇怪的是 select count(*) 有效,这意味着它可以找到数据,但它实际上不能显示任何东西。 我猜这是某处的一些错误配置,但我不确定是什么。

一些可能相关的东西(我匿名了一些东西):

create external schema spectrum_staging
from data catalog
database 'spectrum_db'
iam_role 'arn:aws:iam::############:role/RedshiftSpectrumRole'
create external database if not exists;

create external table spectrum_staging.errors(
  id varchar(100),
  error varchar(100))
stored as parquet
location 's3://mybucket/errors/';

我的示例数据存储在 s3://mybucket/errors/2018-08-27-errors.parquet

此查询有效:

db=# select count(*) from spectrum_staging.errors;
 count
-------
    11
(1 row)

此查询不会:

db=# select * from spectrum_staging.errors;
 id | error 
----+-------
(0 rows)

检查您的 parquet 文件并确保 Spectrum 表中的列数据类型匹配。

然后运行SELECT pg_last_query_id(); 在查询后获取查询编号并查看系统表STL_S3CLIENTSTL_S3CLIENT_ERROR以查找有关查询执行的更多详细信息。

当您已经基于 Glue Data Catalog 定义了外部模式时,您不需要定义外部表。 Redshift Spectrum 会收集目录中的所有表。

可能发生的情况是,您以某种方式拥有两个同名的东西,在一种情况下,它从数据目录中获取它,而在另一种情况下,它尝试使用外部表。

从 Redshift 端检查这些表以更好地了解其中的内容: select * from SVV_EXTERNAL_SCHEMAS select * from SVV_EXTERNAL_TABLES select * from SVV_EXTERNAL_PARTITIONS select * from SVV_EXTERNAL_COLUMNS

这些表用于使用来自外部模式的表的查询: select * from SVL_S3QUERY_SUMMARY select * from SVL_S3LOG order by eventtime desc select * from SVL_S3QUERY where query = xyz select * from SVL_S3PARTITION where query = xyz

有没有解决这个问题的方法? 一年下来,我今天有同样的问题。 在架构差异方面没有什么突出的 - 虽然存在错误

select recordtime, file, process, errcode, linenum as line,
trim(error) as err
from stl_error order by recordtime desc;

/home/ec2-user/padb/src/sys/cg_util.cpp padbmaster 1 601 段编译失败:/rds/bin/padb.1.0.10480/data/exec/227/48844003/de67afa670209cb9cffcd4f6a61e1c32a5b3dccc/0

不确定这意味着什么。

我在使用 RegexSerDe 行格式在 Athena 中创建外部表时遇到了类似的问题。 我能够毫无问题地从 Athena 查询这个外部表。 但是,当从 Redhift 查询外部表时,结果为空。

通过转换为 parquet 格式解决,因为 Spectrum 无法处理正则表达式序列化。

请参阅以下链接:

Redshift 频谱显示所有行的 NULL 值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM