Redshift Spectrum 查询 returns S3 文件中的 0 行
Redshift Spectrum query returns 0 row from S3 file
我尝试了 Redshift Spectrum。下面的两个查询都成功结束,没有任何错误消息,但我无法获得 S3 中上传文件的正确计数,它只返回 0 行计数,即使该文件有超过 300 万条记录。
-- 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/'
我也试过选项'stored as parquet',结果是一样的。
我的 iam 角色具有“s3:”、“athena:”、“glue:*”权限,并且 Glue table 创建成功。
为了以防万一,我确认相同的 S3 文件可以成功复制到 Redshift 集群中的 table。所以,我得出结论 file/data 本身没有问题。
如果我的程序或查询有问题。如有任何建议,我们将不胜感激。
由于您的 DDL 未扫描任何数据,因此问题似乎在于它不理解 s3 中的实际数据。要解决这个问题,您可以使用 AWS Glue 爬虫简单地生成 table。
创建 table 后,您可以将此 table 属性与在 Glue 数据目录中使用 DDL 创建的另一个 table 属性进行比较。这将为您提供差异以及使用 DDL 手动创建的 table 中缺少的内容。
我尝试了 Redshift Spectrum。下面的两个查询都成功结束,没有任何错误消息,但我无法获得 S3 中上传文件的正确计数,它只返回 0 行计数,即使该文件有超过 300 万条记录。
-- 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/'
我也试过选项'stored as parquet',结果是一样的。 我的 iam 角色具有“s3:”、“athena:”、“glue:*”权限,并且 Glue table 创建成功。
为了以防万一,我确认相同的 S3 文件可以成功复制到 Redshift 集群中的 table。所以,我得出结论 file/data 本身没有问题。
如果我的程序或查询有问题。如有任何建议,我们将不胜感激。
由于您的 DDL 未扫描任何数据,因此问题似乎在于它不理解 s3 中的实际数据。要解决这个问题,您可以使用 AWS Glue 爬虫简单地生成 table。
创建 table 后,您可以将此 table 属性与在 Glue 数据目录中使用 DDL 创建的另一个 table 属性进行比较。这将为您提供差异以及使用 DDL 手动创建的 table 中缺少的内容。