微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redshift Spectrum查询从S3文件返回0行

如何解决Redshift Spectrum查询从S3文件返回0行

我尝试了Redshift Spectrum。下面的两个查询都成功结束,没有任何错误消息,但是我无法在S3中获得上载文件的正确计数,即使该文件有超过300万条记录,它也只是返回0行计数。

-- Create External Schema
CREATE EXTERNAL SCHEMA spectrum_schema FROM data catalog 
database 'spectrum_db' 
iam_role 'arn:aws:iam::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
create external database if not exists;

-- Create External Table

create EXTERNAL TABLE spectrum_schema.principals(
tconst VARCHAR (20),ordering BIGINT,nconst VARCHAR (20),category VARCHAR (500),job VARCHAR (500),characters VARCHAR(5000)
)
row format delimited
fields terminated by '\t'
stored as textfile
location 's3://xxxxx/xxxxx/'

我也尝试了“存储为实木复合地板”选项,结果是一样的。 我的iam角色具有“ s3:”,“ athena:”,“ glue:*”权限,并且已成功创建glue表。

以防万一,我确认可以将同一S3文件成功复制到Redshift Cluster中的表中。因此,我得出结论,文件/数据本身没有问题。

如果我的过程或查询有问题。任何建议将不胜感激。

解决方法

由于您的DDL没有扫描任何数据,因此问题似乎在于它不了解s3中的实际数据。要弄清楚这一点,您只需使用AWS Glue搜寻器即可生成表。

一旦创建了表,您就可以将此表属性与在Glue数据目录中使用DDL创建的另一个表进行比较。这将为您带来区别,以及使用DDL手动创建的表中缺少的内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。